我正在测试的应用程序中的所有元素都具有动态ID的。当我在不刷新页面的情况下重播时,测试总是会通过,但是一旦刷新页面,测试就会失败,因为所有元素的id都会随机变化,selenium 无法匹配E 213记录的id和新的id。
我尝试使用Xpath-Xpath,它对一些对象有效,但是如果使用下拉列表和按钮,则使用Xpath-!!
请告诉我如何找到对象的Xpath (、JAVA、或S*elence*中的方法),或者如何为下拉列表和按钮创建一个新的定位器查找器。
我可以显示下拉列表的属性(由Firebug检查),这是在取笑我。
下拉的属性:
<div id="ext-gen1345" class="x-trigger-index-0 x-form-trigger x-form-arrow-trigger x-form-trigger-last x-unselectable" role="button" style="-moz-user-select: none;"></div>下拉列表的属性*选择*
<ul>
<li class="x-boundlist-item" role="option">Rescue</li>
</ul>发布于 2013-10-29 20:53:07
请在发帖前搜索,我一直在反复回答这个问题。
ExtJS页面很难测试,特别是在查找元素方面。
以下是一些我认为有用的建议:
(:id, 'ext-gen1345')//*[@class='someclass']/li/ul/li[2]/ul/li[2]/table/tbody/tr/td[2]/div(:css, '.x-grid-view .x-grid-table')将非常方便。如果存在多个网格,请尝试对它们进行索引或定位可识别的祖先,如(:css, '#something-meaningful .x-grid-view .x-grid-table')。在您的例子中,(:css, '#something-meaningful .x-form-arrow-trigger').//li[contains(@class, 'x-boundlist-item') and text()='Rescue']。但是,这种方法不适用于CSS选择器或多语言应用程序.cls和tdCls,因此您可以在源代码中添加cls:'testing-btn-foo',Selenium可以通过(:css, '.x-panel .testing-btn-foo')获得它。我就这个问题所作的其他回答:
发布于 2013-10-29 15:22:11
我建议您从DIV的任何父级构建xpath。如果没有直接父节点,则可能会造成混乱。
例如,
//*[@id='parentof div']/div
//*[@class='grand parent of div']/div/div我甚至做过这样的事,
//*[@class='someclass']/li/ul/li[2]/ul/li[2]/table/tbody/tr/td[2]/div但是,它仍然不鼓励这样做。
https://stackoverflow.com/questions/19632031
复制相似问题