首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium - WebDriver忽略命令,因为浏览器很忙/命令执行得太快

Selenium - WebDriver忽略命令,因为浏览器很忙/命令执行得太快
EN

Stack Overflow用户
提问于 2020-12-02 00:54:40
回答 1查看 81关注 0票数 0

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

代码语言:javascript
复制
    (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);

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

我加了两行像这样

代码语言:javascript
复制
    System.out.println(new Date());

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

当运行程序“正常”时,这些打印总是同时返回。换句话说,wait在1秒内返回。但是,当调试和跨行时,这些时间戳之间会有4到5秒的长时间延迟,即使我尽可能快地执行。

我怀疑,用于验证页面已加载的3-4的执行速度如此之快,以至于它们会检查上一页(当前)页(URL1)的状态,而不是等待单击导致的页面状态。然后浏览器正忙着加载一个新页面,因此无法处理5.中发送的命令。

如何解决这个问题?

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

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 01:05:59

我在Python中使用Selenium和Web驱动程序已有一段时间了。我刚刚使用Python中的delay()方法休息一下。你能上传完整的代码或其他东西来找出如何帮助你吗?谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65100716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档