Click()方法并不总是有效

use*_*328 27 java selenium webdriver

我在Selenium WebDriver中的测试有问题.Click当程序试图单击按钮时,事件并不总是有效.在一次测试中,一切都很好,在其他测试中则不然.

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

我想知道为什么有一次一切都好,当我第二次运行测试时它不是?

以下是查找和单击按钮的源代码:

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

小智 24

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

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

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

一旦我发现这是一个时间问题,我在这里找到了解决方案:如何让Selenium Web Driver等待元素可访问,而不仅仅是存在?

用Ruby解释解决方案:

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


Are*_*rek 17

您还可以尝试使用基于Javascript的替代方法进行单击.代码可以如下:

WebElement element = driver.findElement(By.id("something"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Run Code Online (Sandbox Code Playgroud)


小智 5

很多时候它是因为浏览器兼容性而发生的(主要是在 Firefox 上)。所以尝试使用“WebElement.sendKeys(Keys.ENTER);” 代码而不是“webElement.click();”


Vam*_*rni -2

造成这种情况的一个可能原因可能是click()方法无法click在每个元素上分派事件。

因此,您可以click在您尝试单击的元素上显式触发事件。

  • 抱歉,“明确”是什么意思? (2认同)

归档时间:

查看次数:

73020 次

最近记录:

7 年,7 月 前