首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium WebDriver中隐式Waits()中的Bug

Selenium WebDriver中隐式Waits()中的Bug
EN

Stack Overflow用户
提问于 2017-09-27 12:40:34
回答 2查看 903关注 0票数 0

我陷入了一个有趣的境地。

每当我在代码中使用隐式等待时,我的驱动程序就能够通过它的XPath定位这些元素。但是,当我注释掉隐式等待命令时,就无法找到元素。然后我在做一些研究,后来当我执行代码时,我得到了一个不同类型的bug。上面写着“未知错误:无法获得自动扩展”。

这真的很有趣,因为等待命令正在影响WebDriver在页面上寻找元素的方式。

请提出为什么会发生这种情况,并分享你的经验,如果它曾经发生在你们中的任何一个。

抛出错误的代码如下:

代码语言:javascript
复制
package xyz;

//import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Asnmnt11 
{
    public static void main(String[] args) //throws InterruptedException 
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Vardhan\\workspace\\SeleniumProject\\files\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

    driver.manage().window().maximize();
    driver.get("https://facebook.com");
    //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);



driver.findElement(By.cssSelector("input.inputtext")).sendKeys("user@gmail.com");
        driver.findElement(By.cssSelector("input[tabindex='2']")).sendKeys("password");
        //Thread.sleep(2000);
        driver.findElement(By.xpath(".//*[@id='u_0_2']")).click();

        //driver.manage().timeouts().implicitlyWait(5000, TimeUnit.SECONDS);
        driver.quit();
    }

}

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-09-27 14:50:00

当您删除隐式等待时,驱动程序不知道它应该查找元素多长时间。它进行快速搜索,如果元素不存在,那么它将抛出元素未找到的异常。

Xpath元素需要更多的时间来查找。因此,有一个隐含的等待总是好的。为什么?

  1. 搜索元素可能需要时间。
  2. 网站仍在加载
  3. 元素仍在加载

当我在没有任何隐式等待的情况下运行您的测试时,驱动程序很快就放弃了查找元素。

代码语言:javascript
复制
org.openqa.selenium.NoSuchElementException: 
no such element: Unable to locate element: {"method":"xpath","selector":".//*[@id='u_0_2']"}

Command duration or timeout: 0 milliseconds

这表示驱动程序在0毫秒内寻找元素,但没有找到它。因此,有一个隐含的等待总是一个好主意。

未知错误:无法获得自动扩展

这个问题主要是显色剂和铬问题。通常是由于使用与当前铬版本不兼容的旧色驱动程序版本造成的。Chrome是自动更新,所以尝试更新您的色度驱动器以及。

票数 1
EN

Stack Overflow用户

发布于 2017-09-27 16:01:08

如果通过xpath搜索元素,那么定位需要更多时间,所以最好使用隐式或显式等待。当我不用等待时间就使用您的代码时,它会抛出NoSuchElementException

由于facebook页面的加载时间很短,而且您正在尝试xpath来定位元素,所以使用隐式或显式等待是很好的。

现在你有问题了

未知错误:无法获得自动扩展

这是色度驱动程序的问题,有时我在使用ChromeOptions时也会得到它。因此,与隐式等待完全无关的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46448153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档