【问题标题】:Unable to click this ExtJS button using Selenium WebDriver无法使用 Selenium WebDriver 单击此 ExtJS 按钮
【发布时间】:2014-05-23 05:02:34
【问题描述】:
<td id="ext-gen383" class="x-toolbar-cell">
    <table id="ext-comp-1144" class="x-btn x-btn-icon" cellspacing="0">
    <tbody class="x-btn-small x-btn-icon-small-left">
    <tr>
     <tr>
     <td class="x-btn-ml">
     <td class="x-btn-mc">
     <em class=" x-unselectable" unselectable="on">
     **<button id="ext-gen384" class="x-btn-text x-tbar-page-last" type="button">**      </button>
</em>

我试图点击按钮。请参阅上面的 html。尝试了很多方法。 例如:

//*[contains(@class,'x-btn-text x-tbar-page-last')] or
//button[contains(@class,'x-btn-text x-tbar-page-last')]

但还是不行。

【问题讨论】:

  • 自动化 ExtJS 应用程序是困难的。很难在相对较短的段落中向您展示。以下是我之前做出的几个答案,请随时查看here、here、here 和here。您提供的 HTML 不足以给您一个好的答案,即使您发布了整个 HTML,也可能没有找到此按钮的好方法。如果可能,请在源代码中添加唯一的类名。

标签: extjs selenium webdriver


【解决方案1】:

我猜只生成最后的数字。试试:

By.cssSelector("em.x-unselectable > button[id^='ext-gen']")

另外,看看那个&lt;em&gt;,你确定那个类没有使按钮不可点击吗?顾名思义,它似乎禁用了点击。

【讨论】:

  • 感谢您的回复。我不知道 unselectablet 是什么意思。该按钮可手动点击。我试过你的代码。它只是让我退出。注销按钮也有类似的 CSS。 :(
  • @sircapsalot:ExtJS 应用程序中几乎所有元素的 id 都以ext-gen 开头。 x-unselectable 是任何“不可选择”的类名。自动化 ExtJS 应用程序的最佳方法是添加唯一的类名以用于测试目的,但我想大多数 Selenium 开发人员不会费心这样做。
  • @Yi Zeng,其实我是用类名来定位元素的。但是失败了。不知道为什么。你有什么主意吗? -李嘉璐
【解决方案2】:

如果不查看页面的完整 html,很难判断。由于 ExtJS 会生成随机 id,因此确实没有任何好的属性可用于查找元素。

我建议只使用 XPath,然后使用索引(如果您的页面有多个按钮元素):

 //button[1]

并相应地调整索引,直到你得到正确的按钮来点击。

同样,您可以使用 driver.findElements 的 WebDriver API,它将返回所有匹配项的集合,然后您可以将索引应用于该集合以获取正确的按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2021-11-09
    • 2019-12-14
    • 2016-09-22
    • 2016-03-02
    • 2020-03-16
    • 2014-01-04
    相关资源
    最近更新 更多