我已经使用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。
答案 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