2017-09-27 29 views
0

我陷入了一个有趣的情况。Selenium WebDriver中的隐式等待()中的错误

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

这真的很有趣,因为等待命令正在影响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("[email protected]"); 
     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(); 
    } 

} 

感谢。

回答

1

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

Xpath元素需要更多时间才能找到。所以有一个隐含的等待总是很好的。为什么?

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

当我运行,没有任何隐含的测试等待司机放弃了寻找的元素相当快。

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会自动更新,因此请尝试更新您的chromedriver。

+0

正确@MArdis你是对的,我的想法和你的一样:) – iamsankalp89

1

如果您通过xpath搜索元素,则需要更多时间来定位,以便更好地使用隐式或显式等待。当我没有等待一段时间就使用你的代码时,它会抛出NoSuchElementException

AS脸书页面需要花费时间加载,并且您正在尝试xpath来定位元素,因此使用隐式或显式等待很好。现在

因为你有问题

unknown error: cannot get automation extension

是chromedriver问题,有时我也得到了它,当我使用ChromeOptions。所以这是完全不相干的问题与隐含等待

相关问题