【问题标题】:Identifying ExtJS elements with selenium webdriver使用 selenium webdriver 识别 ExtJS 元素
【发布时间】:2020-09-14 20:26:44
【问题描述】:

我正在处理 EXTJS 应用程序中的下拉按钮,我正在尝试使用 selenium Web 驱动程序自动化。

点击图片我会得到一个 '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">

【问题讨论】:

  • 附带说明,您可能想看看 Bryntum Siesta,这是一个用 ExtJS 制作的测试自动化框架,专门为 ExtJS 测试量身定制。

标签: selenium xpath extjs webdriver


【解决方案1】:

XPath 下方尝试匹配所需的img 元素:

//input[@value="Clients with pending exceptions"]/following-sibling::img

【讨论】:

    【解决方案2】:

    因此,如果您想开始测试 ExtJS 应用程序并且不想为此使用最佳解决方案,例如 Sencha Test 或 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 组件称为 log,因为 Ext 源代码仍然是相同的,您的测试将始终有效。

    但是这样做很麻烦,而且工作量很大。最好使用准备好的解决方案,例如 Sencha Test,其中一切都已经为测试 ExtJS 应用程序做好了准备。

    【讨论】:

      【解决方案3】:

      我会这样做:

      driver.findElement(By.xpath("//div[contains(@class, 'x-form-field-wrap')]//img"));
      

      driver.findElement(By.xpath("//img[contains(@src, 'https://REDACTED/com.ssc.epw.gui.EPWHome/clear.cache.gif')]"));
      

      【讨论】:

        猜你喜欢
        • 2016-04-14
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 2016-07-08
        相关资源
        最近更新 更多