我怎么能避免"元素目前不可见,因此可能无法与Selenium Webdriver进行交互

hks*_*233 14 selenium webdriver selenium-webdriver

我使用selenium webdriver 2.210 + JAVA进行测试.我有一个示例代码,用于选择gmail中的所有邮件.但是当我尝试放置5秒延迟时,代码会抛出"元素当前不可见,因此可能无法与之交互"错误通过webdriver获取URL后,是否有可能使此代码与延迟一起工作?

    driver.get("https://mail.google.com/mail/u/0/?shva=1#all");
        delay(5);  ////*......Working fine without this...........*////
    driver.switchTo().frame(driver.findElement(By.id("canvas_frame")));
driver.findElement(By.xpath("//div[@class = 'T-Jo-auh']")).click();
Run Code Online (Sandbox Code Playgroud)

提前致谢

Kes*_*sty 18

你确定你在看正确的元素吗?我遇到了类似的问题,结果发现页面上有两个相似的元素,一个是可见的,另一个不是.FindElement函数返回了一个不可见的函数.

我通过使用FindElements而不是FindElement解决了这个问题,然后使用Linq提取了一个可见的.


ale*_*cxe 5

以下是您可以采取的解决问题的摘要(Protractor/Javascript中的示例):


小智 1

我不确定,但每个 watir-webdriver 元素都有 - (Object) wait_until_present(timeout = 30) 方法。

如果此步骤是可选的,您应该检查可见性:

element = driver.findElement(By.xpath("//div[@class = 'T-Jo-auh']"));

if (element.isDisplayed()) {
  element.click();
}
Run Code Online (Sandbox Code Playgroud)

请注意,我不是 Java 专家,上面的代码未经测试。试一试。