使用Selenium切换活动选项卡 [英] Switch active tabs with Selenium
本文介绍了使用Selenium切换活动选项卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了此代码,用于将所有搜索结果打开到新标签中:
I have developed this code which is used to open all search results into new tab:
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
results.get(i).sendKeys(selectLinkOpeninNewTab);
for (int i = 0; i < results.size(); i++)
{
ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs2.get(1));
driver.close();
driver.switchTo().window(tabs2.get(0));
}
当我打开包含搜索结果的所有标签时,我想要切换在所有标签之间延迟2秒。
what I want is when I open all tabs with search results I want to switch between all tabs with 2 seconds delay.
我如何实现这个?
推荐答案
试试这段代码,
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class TabSwitching {
public static void main(String[] args) throws InterruptedException, AWTException {
System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/Driver/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com/xhtml");
Thread.sleep(5000);
WebElement searchBox = driver.findElement(By.name("q"));
searchBox.sendKeys("Software testing");
searchBox.submit();
System.out.println("Current Url: " + driver.getCurrentUrl());
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("h3.r a")));
List<WebElement> results = driver.findElements(By.xpath("//h3[@class='r']/a"));
for (WebElement ele : results) {
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
ele.sendKeys(selectLinkOpeninNewTab);
}
Thread.sleep(5000);
ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
System.out.println(tabs2.size());
for (int i = tabs2.size()-1; i>=0; i--) {
Thread.sleep(2000);
driver.switchTo().window(tabs2.get(i));
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_CONTROL);
System.out.println(driver.getTitle() + "i: " + i);
driver.close();
}
}
}
这篇关于使用Selenium切换活动选项卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文