selenium - 通过 Selenium Webdriver (Java) 操作 Chrome 浏览器选项卡(打开、关闭、切换)
问题描述
我正在尝试为 Chrome 浏览器执行基本的浏览器选项卡操作,例如 -
- 打开一个新标签
- 切换到它
- 关闭标签
但是,我尝试过的所有方法都不起作用,如下所示:
Selenium 中的动作类 ---
actions.click(driver.findElement(By.cssSelector("body"))).keyDown(Keys.LEFT_CONTROL).sendKeys("t") .keyUp(Keys.LEFT_CONTROL).build().perform();
通过
sendKeys()
---driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
我还在网上搜索了解决方案,但所有这些问题都存在 3 到 4 年,而且列出的解决方案似乎对我不起作用:(
我在用:
- 爪哇 8
- 硒 v3.141.59
- 铬 v80.0.3987.132
- webdrivermanager v3.8.1
如果您知道任何解决方案或解决方法,请回复;任何帮助将不胜感激.. :)
谢谢
解决方案
最好的方法之一是找到元素并按下它.sendKeys();
,以便在新选项卡中打开并切换到它。就像这样:
//opening in a new tab
driver.findElement(By.id("abc")).sendKeys(Keys.chord
(Keys.CONTROL, Keys.ENTER));
// adding all the tabs to set
Set<String> tabIDs = driver.getWindowHandles();
// creating iterator for going through the set of your opened tabs
Iterator<String> iterator = tabIDs.iterator();
// switching to the next tab
driver.switchTo().window(iterator.next());
// or you can loop it like below and iterate automatically after some actions in the each tab
while (iterator.hasNext()) {
driver.switchTo().window(iterator.next());
// do something
}
推荐阅读
- maxima - 以最大值同时显示和保存图
- go - 函数接受抽象接口和函数接受结构体实现之间的golang转换
- python - 是否有必要使用“numpy.float64”?
- r - 栅格范围和分辨率的修改会改变像素值的总和
- java - 如何从对象列表中提取元素并存储在字符串数组中
- algorithm - 离当前点最近的点
- android - 无法在活动中使日期选择器全屏显示
- delphi - 为什么我收到 E2531“方法需要显式类型参数”
- spring - Spring Boot OAuth2 - 空范围(不允许客户端或用户请求的范围)
- python - python身份危机为什么l或x复制0而不是新的0