【问题标题】:I am unable to click on a Web Element using Selenium Webdriver我无法使用 Selenium Webdriver 单击 Web 元素
【发布时间】:2015-09-01 18:11:35
【问题描述】:

我正在尝试使用 selenium Webdriver 自动化应用程序。我经常遇到点击操作在 WebElements 上不起作用的场景。

例如,在看起来像这样的 html 块中:

<div id=staticid>
  <table>
    <tbody>
      <tr id="tr1" class="class1" tabindex="-1" data-recordindex="0" data-recordid="1" data-boundview="gridview-1211" role="row">
        <td id="td1" class="class2 " role="gridcell">
          <div class="class3 " style="text-align:left;" unselectable="on">Content 1</div>
        <td id="td2" class="class6" role="gridcell">
          <div class="class5" style="text-align:center;" unselectable="on">
            <img class="class4" src="chekboximage">
          </div>
        </td>
        <td id="td3" class="class8" role="gridcell">
          <div class="class5" style="text-align:center;" unselectable="on">
            <img class="class4" src="checkboximage">
          </div>
        </td>
      </tr>
    </tbody>
  </table>
</div>

ids 是动态生成的,类就像“grid-inner..”等等。 (我已经更换了它们以使其更小) 最后两个元素显示为复选框。 单击块时,td 块的类会更改,并且复选框似乎已被单击。

我尝试使用 driver.findElement(By.xpath())、csspath 和所有内容单击复选框。点击动作似乎执行成功,但没有出现想要的结果,即被选中的复选框。

我使用 Selenium IDE 验证了我的 xpath 和 csspath。使用“查找”选项正确定位元素。单击操作也会执行,但复选框仍未选中。

我已经尝试完成这项工作将近一周了。 谁能帮帮我?

代码似乎确实在点击时改变了图像(我比较了点击前后的图像源)。但是没有可见的“onclick()”调用(我不确定是否有其他方法可以在点击时调用 java 脚本功能。如果有,请告诉我)。无论如何,我尝试单击该块。它适用于 Se-IDE 和 Se-IEDriver,但不适用于 FireFoxDriver。

【问题讨论】:

  • 您需要显示您遇到问题的代码。请注意,您提供的示例 HTML 没有任何复选框。这些图像在您看来可能像一个复选框,并且背景中可能有一些 javascript 事件来回切换图像。
  • 大概有一个 JavaScript onClick 处理程序改变了td 的类?你能检查一下这是在哪个元素上注册的吗?您使用 Selenium 查找并单击了哪个元素(tddivimg)?此外,您的 Selenium 代码是否可能在动态元素生成完成之前或在事件处理程序注册之前运行?
  • 你试过MoveToElement方法吗?
  • 是的,迈克,我有。它的行为方式相同

标签: selenium selenium-webdriver


【解决方案1】:

尝试driver.findElement(By.xpath()).sendKeys(Keys.ENTER); 这也与单击相同,但使用键盘敲击。希望它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2020-11-10
    • 2021-06-19
    • 1970-01-01
    • 2020-03-20
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多