Click() 方法并不总是有效

新手上路,请多包涵

我在 Selenium WebDriver 中的测试有问题。 Click 当程序试图点击按钮时,事件并不总是有效。在一次测试中一切正常,在其他测试中则不然。

每个测试都从一页开始。首先,用户必须从 select 组件中选择一个选项,然后用户单击一个按钮。

我想知道为什么一次一切正常,而当我第二次运行测试时却不行?

下面是查找和点击按钮的源代码:

 public void clickContinueBtn() {
    webElement = driver.findElement(By.xpath("//div[@class='btn magenta_s']/a/span"));
    webElement.click();
}

原文由 user1494328 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 555
1 个回答

我遇到了类似的问题。 click 方法在其他页面上有效,然后在特定页面上根本不起作用。

竞争条件导致了这个问题:

  1. HTML 内容在禁用按钮的情况下呈现。
  2. selenium web 驱动程序脚本在 javascript onload 事件被触发 (或完成执行) 之前执行。因此 button.click 将出现在禁用元素上。什么都不会发生。
  3. 然后 javascript onload 事件将触发 (或完成执行) 并且 javascript 将启用该按钮。
  4. 我查看了该页面,但无法弄清楚为什么我的代码无法正常工作,因为该按钮在检查时似乎已启用,如果我手动单击该按钮,它就会正常工作。

一旦我发现这是一个时间问题,我在这里找到了解决方案: How can I get Selenium Web Driver to wait for an element to be accessible, not just present?

用 Ruby 解释解决方案:

 //This will not return the button until it is enabled.
button = driver.find_element(:xpath,  "//button[@id='myButtonId' and not(@disabled)]")
button.click

原文由 Walker D 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题