您需要做的第一件事是打开一个新选项卡并保存它的句柄名称。最好使用 javascript 而不是键 (ctrl+t) 来执行此操作,因为自动化服务器上的键并不总是可用的。例子:
public static String openNewTab(String url) {
executeJavaScript("window.parent = window.open('parent');");
ArrayList<String> tabs = new ArrayList<String>(bot.driver.getWindowHandles());
String handleName = tabs.get(1);
bot.driver.switchTo().window(handleName);
System.setProperty("current.window.handle", handleName);
bot.driver.get(url);
return handleName;
}
您需要做的第二件事是在选项卡之间切换。仅通过切换窗口句柄来执行此操作并不总是有效,因为您将处理的选项卡不会始终处于焦点,并且 Selenium 会不时出现故障。正如我所说,使用键有点问题,而且 javascript 并不真正支持切换选项卡,所以我使用警报来切换选项卡,它就像一个魅力:
public static void switchTab(int tabNumber, String handleName) {
driver.switchTo().window(handleName);
System.setProperty("current.window.handle", handleName);
if (tabNumber==1)
executeJavaScript("alert(\"alert\");");
else
executeJavaScript("parent.alert(\"alert\");");
bot.wait(1000);
driver.switchTo().alert().accept();
}