我正在处理一个下拉按钮,在EXTJS应用程序,我试图与 selenium 网络驱动程序自动化。
点击图片,我将得到一个元素列表,以's的形式点击选择
请帮助我如何设置一个xpath来点击这张图片,我不应该使用“id”(因为它的extjs可能会不时变化)。如果有任何选择器我可以使用extjs,请建议。谢谢你的帮助。
<DIV id=ext-gen2337 class=x-form-field-wrap style="WIDTH: 0px"><INPUT id=ext-gen2023 class=" x-form-text x-form-field" style="WIDTH: 297px" readOnly size=24 value="Clients with pending exceptions" name=ext-gen2023 autocomplete="off"><IMG id=ext-gen2338 class="x-form-trigger x-form-arrow-trigger" src="https:REDACTED/com.ssc.epw.gui.EPWHome/clear.cache.gif">
3条答案
按热度按时间xtupzzrd1#
请尝试以下
XPath
以匹配所需的img
元素:yquaqz182#
因此,如果你想开始测试ExtJS应用程序,你不想使用最好的解决方案,如 Sencha 测试或Bryntum Siesta.
实现这一点的最佳方法是在ExtJS组件和站点的html dom之间编写自己的层。
您可以在我的答案中看到更多信息https://stackoverflow.com/a/41718879/1768843
但您需要做的是使用Ext.Component.Query,使用Selenium,您可以在站点上执行javascript代码。因此,您执行ext查询,并将Ext选择器传递到那里-例如
button[text=something]
或panel[name=mainPanel]
,只是任何ExtJS组件选择器。这将返回ExtJS对象,通过它,您可以简单地调用.getDom()
或.getId()
,这将返回HTML中使用的实际dom或id。接下来,您可以简单地使用webdriver函数来单击站点中的HTML元素(或其他操作)。^^您需要这样做,因为ExtJS框架每次生成的HTML都有一些不同。例如,您添加了新的容器或升级了ExtJS版本,HTML发生了变化,您的测试可能会停止工作。但如果您调用Ext组件,因为Ext源代码仍然相同,您的测试将始终工作。
但这样做是相当麻烦和大量的工作。最好使用准备好的解决方案,如 Sencha Test,其中一切都已经准备好测试ExtJS应用程序。
zaqlnxep3#
我会这样做:
或