首页 > 解决方案 > 为什么 Selenium 在忙于加载另一个页面时无法执行 driver.get(URL)?

问题描述

我使用 Selenium 自动执行公共网站上的任务。

首先,我通过输入用户名/密码然后单击登录来登录 https://somesite/login。之后我想加载另一个页面(https://somesite/anotherpage)。

第二步失败,因为在第一步之后开始页面 https://somesite/ 开始加载并且需要一些时间才能完成,并且driver.get(someURL)如果浏览器正忙于加载另一个页面,似乎不会执行。

  1. driver.get(someURL)如果在另一个页面尚未完成加载时执行,为什么会失败?

  2. 我真的需要使用 wait.until(ExpectedConditions... (或者是他们更好的选择吗?)并在我加载下一页之前验证 https://somesite/ 是否已完成加载?这不是浏览器在使用时的工作方式“手动”。

标签: javaseleniumgoogle-chrome

解决方案


我实际上已经完成了一些网络自动化项目,其中我使用以下代码打开了多个选项卡:

((JavascriptExecutor) driver).executeScript("window.open()");//open new tab
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));//switch tabs
driver.get("link_to_open_in_new_tab");

这非常快,所以我建议您尝试一下...即使您等待上一页完全加载,您也可以轻松切换标签:

driver.switchTo().window(tabs.get(tabnumber));

使用此代码,我从未遇到过打开新标签的问题


推荐阅读