您需要做的第一件事是打开一个新标签并保存它的句柄名称。最好使用javascript而不是keys(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();
}