【问题标题】:Selenium WebDriver with Java NoSuchElementException timeout带有 Java NoSuchElementException 超时的 Selenium WebDriver
【发布时间】:2013-10-10 07:28:40
【问题描述】:

我对 NoSuchElementException 的超时时间有疑问,默认情况下似乎是 30 秒,我想缩短它。所以我写了这样的东西:

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
element.click();

我收到这条消息:

org.openqa.selenium.TimeoutException: Timed out after 10 seconds waiting for element to be
clickable: By.id: someid

org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: 
{"method":"id","selector":"someid"}
Command duration or timeout: 30.03 seconds

所以第一条消息是我希望 WebDriverWait 会覆盖 NoSuchElementException 超时但我仍然得到完整的 30 秒。无论如何,有什么办法可以摆脱这个?

【问题讨论】:

    标签: java selenium selenium-webdriver timeout nosuchelementexception


    【解决方案1】:

    试试这些:

    driver.manage().timeouts().implicitlyWait()
    driver.manage().timeouts().setScriptTimeout()
    

    【讨论】:

    • hum implicitlyWait() 确实有效,您知道为什么 WebDriverWait 方法无效吗?
    • 是的。 WebDriverWait 不起作用,因为您正在调用 elementToBeClickable。我想可能想要wait.until(ExpectedConditions.not(ExpectedConditions.invisiblilityOfElementLocated(By.id("someid")));
    【解决方案2】:

    在 Selenium WedDriver 中使用 Java 等待 10 秒:

    对于隐式等待:

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    

    对于显式等待:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("someID")));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-24
      • 2016-04-29
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 2017-03-23
      相关资源
      最近更新 更多