脚本有时会出现TimeOutException。有时工作正常

时间:2019-05-19 03:27:26

标签: selenium selenium-webdriver

我已经使用Selenium和Java编写了脚本。有时没有任何异常,它工作正常。但是有时我会因为使用显式等待而收到TimeOutException。这种行为与应用程序有关吗?可能是什么问题?

ChromeOptions options = new ChromeOptions();
    options.addArguments("incognito");
    WebDriver driver = new ChromeDriver(options);

    driver.get("url");

    WebDriverWait wait = new WebDriverWait(driver, 20);


    wait.until(ExpectedConditions.elementToBeClickable(By.id("usernameid")));
    driver.findElement(By.id("usernameid")).sendKeys("632145");

    wait.until(ExpectedConditions.elementToBeClickable(By.id("passwordid")));
    driver.findElement(By.id("passwordid")).sendKeys("1234");


    wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//button[@type='button']")));
    driver.findElement(By.xpath(".//button[@type='button']")).click();

有时脚本在按钮上失败。我收到了TimeOutException。

2 个答案:

答案 0 :(得分:1)

仅使用带有大量等待组合的“ Waiter” api即可。

<dependency>
   <groupId>com.imalittletester</groupId>
    <artifactId>thewaiter</artifactId>
    <version>1.0</version>
</dependency>

答案 1 :(得分:0)

在这里,您在每个元素上使用WebDriverWait 20秒钟而未设置ImplicitWait。如果您确实需要在每个元素上等待20秒,请先将ImplicitWait设置为20秒以上,然后再使用WebDriverWait。

请注意,ImplicitWait仅适用于findElement和findElements方法。

如果我们未设置ImplicitWait,则硒用于查找元素的默认超时为0秒。 您可以从以下网址中获得更多详细信息:The default value of timeouts on selenium webdriver