java - 为什么 Selenium 在忙于加载另一个页面时无法执行 driver.get(URL)?
问题描述
我使用 Selenium 自动执行公共网站上的任务。
首先,我通过输入用户名/密码然后单击登录来登录 https://somesite/login。之后我想加载另一个页面(https://somesite/anotherpage)。
第二步失败,因为在第一步之后开始页面 https://somesite/ 开始加载并且需要一些时间才能完成,并且driver.get(someURL)
如果浏览器正忙于加载另一个页面,似乎不会执行。
driver.get(someURL)
如果在另一个页面尚未完成加载时执行,为什么会失败?我真的需要使用 wait.until(ExpectedConditions... (或者是他们更好的选择吗?)并在我加载下一页之前验证 https://somesite/ 是否已完成加载?这不是浏览器在使用时的工作方式“手动”。
解决方案
我实际上已经完成了一些网络自动化项目,其中我使用以下代码打开了多个选项卡:
((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));
使用此代码,我从未遇到过打开新标签的问题
推荐阅读
- haskell - Let vs. Haskell 中的 Lambda
- linux - 在 Perf 采样模式下检索程序执行时间
- typescript - Typescript:如何修改 tsconfig 以支持类(我不是在谈论模块)
- android - Android 无法在本地电话簿中以编程方式更新联系人详细信息
- javascript - 在 ThreeJS 中加载多个 OBJ 文件并设置它们的位置的问题
- reactjs - 尝试部署 Strapi、MongoDB Atlas 时出现 Heroku H10 错误
- cypress - 如何从导航器设置状态或调度操作(例如:柏树测试)
- c# - sfsafariviewcontroller 处理权限请求
- java - 使用 xpath 定位文本字段元素
- java - 使用 Java Fork/Join 并行搜索字符串中的单词