【问题标题】:Operate Chrome browser tabs (open, close, switch) through Selenium Webdriver (Java) [duplicate]通过 Selenium Webdriver(Java)操作 Chrome 浏览器选项卡(打开、关闭、切换)[重复]
【发布时间】:2020-06-26 16:38:38
【问题描述】:
我正在尝试为 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 年,而且列出的解决方案似乎对我不起作用:(
我正在使用:
- Java 8
- 硒 v3.141.59
- Chrome v80.0.3987.132
- webdrivermanager v3.8.1
如果您知道任何解决方案或解决方法,请回复;任何帮助将不胜感激.. :)
谢谢
【问题讨论】:
标签:
selenium
selenium-webdriver
selenium-chromedriver
【解决方案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
}