我正在尝试在两个标签之间切换,并找到以下代码
ArrayList<String> tabs2 = new ArrayList<String> (page.getWindowHandles());
System.out.println(tabs2.size());
page.switchTo().window(tabs2.get(1));
page.close();
page.switchTo().window(tabs2.get(0));
我有一个疑问。我的窗口是相同的,因此page.getWindowHandles()
只返回一个句柄。 tabs2.size
为1,因此page.switchTo().window(tabs2.get(1));
提供异常ArrayIndexOutOfBound
我在这篇文章switch tabs using Selenium WebDriver with Java中找到了类似的代码,但对我来说这段代码给出了异常。
答案 0 :(得分:0)
只需尝试添加一行代码,以确保在浏览器中打开两个或更多选项卡:
page.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
请注意,要发送的实际密钥取决于您的操作系统,例如Mac 使用
Keys.COMMAND + t
代替Keys.CONTROL + t
。
发布此信息,您使用的代码片段似乎适合切换标签:
ArrayList<String> tabs2 = new ArrayList<String> (page.getWindowHandles());
System.out.println(tabs2.size());
page.switchTo().window(tabs2.get(1));
page.close();
page.switchTo().window(tabs2.get(0));
注意 :我假设页面这里是WebDriver实例本身。
答案 1 :(得分:0)
protected void switchTabsUsingPartOfUrl(String platform) {
String currentHandle = null;
try {
final Set<String> handles = driver.getWindowHandles();
if (handles.size() > 1) {
currentHandle = driver.getWindowHandle();
}
if (currentHandle != null) {
for (final String handle : handles) {
driver.switchTo().window(handle);
if (currentUrl().contains(platform) && !currentHandle.equals(handle)) {
break;
}
}
} else {
for (final String handle : handles) {
driver.switchTo().window(handle);
if (currentUrl().contains(platform)) {
break;
}
}
}
} catch (Exception e) {
System.out.println("Switching tabs failed");
}
}
调用此方法并将参数传递给要切换到的选项卡的URL的子字符串