我陷入了一个有趣的境地。
每当我在代码中使用隐式等待时,我的驱动程序就能够通过它的XPath定位这些元素。但是,当我注释掉隐式等待命令时,就无法找到元素。然后我在做一些研究,后来当我执行代码时,我得到了一个不同类型的bug。上面写着“未知错误:无法获得自动扩展”。
这真的很有趣,因为等待命令正在影响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();
}
}提前谢谢。
发布于 2017-09-27 14:50:00
当您删除隐式等待时,驱动程序不知道它应该查找元素多长时间。它进行快速搜索,如果元素不存在,那么它将抛出元素未找到的异常。
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毫秒内寻找元素,但没有找到它。因此,有一个隐含的等待总是一个好主意。
未知错误:无法获得自动扩展
这个问题主要是显色剂和铬问题。通常是由于使用与当前铬版本不兼容的旧色驱动程序版本造成的。Chrome是自动更新,所以尝试更新您的色度驱动器以及。
发布于 2017-09-27 16:01:08
如果通过xpath搜索元素,那么定位需要更多时间,所以最好使用隐式或显式等待。当我不用等待时间就使用您的代码时,它会抛出NoSuchElementException。
由于facebook页面的加载时间很短,而且您正在尝试xpath来定位元素,所以使用隐式或显式等待是很好的。
现在你有问题了
未知错误:无法获得自动扩展
这是色度驱动程序的问题,有时我在使用ChromeOptions时也会得到它。因此,与隐式等待完全无关的问题。
https://stackoverflow.com/questions/46448153
复制相似问题