我陷入了一个有趣的情况。

每当我在代码中使用隐式等待时,驱动程序便可以通过其XPath定位元素。但是,当我注释掉隐式wait命令时,则无法找到该元素。
然后我进行了一些研究,后来当我执行代码时,我遇到了另一种错误。它说:“未知错误:无法获得自动化扩展”。

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

请说明为什么会发生这种情况,如果以前发生过,请与您分享经验。

引发错误的代码如下:-

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();
    }

}


提前致谢。

最佳答案

当您删除隐式等待时,驱动程序将不知道寻找元素的时间。它会进行快速搜索,如果不存在该元素,则它将引发该元素未找到异常。

Xpath元素需要花费更多时间才能找到。因此,最好有一个隐式等待。为什么?


搜索元素可能需要一些时间
网站仍在加载
元素仍在加载


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

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毫秒,但没有找到它。因此,进行隐式等待总是一个好主意。

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

这个问题主要是chromedriver和chrome问题。通常是由使用较旧的chromedriver版本导致的,该版本与您当前的chrome版本不兼容。 Chrome会自动更新,因此也请尝试更新您的chromedriver。

10-07 13:03
查看更多