Selenium-WebDriver忽略命令,因为浏览器正忙/命令执行速度过快



我正在Java Selenium中做类似的事情(括号内的数字是行号。它们不在实际代码中。(

(1) driver.get(URL1);
(2) driver.findElement(By.xpath(xpath)).click();
(3) WebDriverWait wait = new WebDriverWait(driver, 15);
(4) wait.until(webDriver -> ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete"));
(5) driver.get(URL2);

但在执行此代码时会忽略5driver.get(URL2);,但如果我通过这些行进行步进(调试(,它会正常工作。

我添加了两行像这个

System.out.println(new Date());

在3之前和4之后,结果很奇怪:

当运行程序";正常的";这些打印输出总是同时返回。换句话说,wait在1秒内返回。然而,当调试和遍历这些行时,即使我尽可能快地执行,这些时间戳之间也会有4-5秒的长延迟。

我怀疑应该验证页面已加载的3-4执行得如此之快,以至于他们检查上一个(当前(页面(URL1(的状态,而不是等待点击产生的页面。然后浏览器正忙于加载新页面,因此无法处理5中发送的命令。

如何解决此问题

我在SE上读了几十个关于如何让Selenium等待页面加载的问题,但我已经在使用这些问题中建议的最常见的解决方案之一(第3-4行(。

我在Python中使用Selenium和Web驱动程序已经有一段时间了。我刚刚用了Python中的delay((方法休息一下。你能上传整个代码吗?谢谢

最新更新