我使用了下面的代码,但它抛出一个错误,上面写着“无法关注元素”。请帮忙。
String selectAll = Keys.chord(Keys.ALT,"T");
driver.findElement(By.tagName("html")).sendKeys(selectAll);
答案 0 :(得分:1)
切换标签的最佳方法是使用switchTo(),如果您知道新的窗口名称:
driver.switchTo().window(WINDOW_NAME);
否则获取打开的窗口列表并使用它切换:
List<String> openTabs = driver.getWindowHandles();
for(String tab in openTabs) {
driver.switchTo().window(openTabs.get(tab);
}
因此,您可以遍历打开的窗口,直到找到所需的窗口。
答案 1 :(得分:0)
您可以通过使用操作将Alt + Tab
等ShortcutKeys发送到驱动程序而不使用元素。
public static void sendShortCut(WebDriver driver) {
Actions action = new Actions(driver);
action.sendKeys(Keys.chord(Keys.CONTROL, "T")).build().perform();
}
但是你的目标是切换到窗口/标签。在Selenium中,窗口和标签都是相同的。
我已经为您提供了两个解决方案,这些解决方案可以从函数名称中自我解释
public static void switchToWindowByTitle(WebDriver driver, String title) {
Set<String> Handles = driver.getWindowHandles();
for (String handle : Handles) {
driver.switchTo().window(handle);
String drivertitle = driver.getTitle().trim();
if (drivertitle.equals(title)) {
break;
}
}
}
//Index is 0 based
public static void switchToWindowByIndex(WebDriver driver, int index) {
Set<String> handles = driver.getWindowHandles();
if (handles.size() > index) {
String handle = handles.toArray()[index].toString();
driver.switchTo().window(handle);
}
}
答案 2 :(得分:0)
您可以使用以下方式打开另一个标签页:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
并使用以下方法切换到标签:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN);