新标签页中的 Selenium
Selenium in new tabs
我目前正在为 Web 平台进行 Selenium 测试,我注意到该测试在查找特定页面上的元素时存在问题,这会使测试失败。一旦测试按下一个按钮,就会出现问题,这会打开一个新选项卡,所以我的问题是发生这种情况的原因是由于 webdriver 被设置为网络浏览器中的第一个选项卡还是其他原因?
PS.The 如果驱动程序设置为从第二页开始,测试查找元素没有问题。
您的建议听起来很正确,要使用新选项卡,您必须将驱动程序切换到它。
这可以像这样简单地完成:
public void switchToNewWindow(){
wait(500);
List<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(tabs.size()-1));
}
切换回第一个 window 你可以使用这个:
public void switchToFirstWindow(){
List<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));
}
如果有超过 2 个选项卡,您可以切换到任何选项卡,如上所示切换到具有相应索引的选项卡。
您必须切换到新选项卡,因为驱动程序只会找到实际的选项卡 WebElements。
使用以下命令切换到新标签:
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.close(); //to close actual tab
driver.switchTo().window(tabs.get(1)); //then switch to new tab
我目前正在为 Web 平台进行 Selenium 测试,我注意到该测试在查找特定页面上的元素时存在问题,这会使测试失败。一旦测试按下一个按钮,就会出现问题,这会打开一个新选项卡,所以我的问题是发生这种情况的原因是由于 webdriver 被设置为网络浏览器中的第一个选项卡还是其他原因?
PS.The 如果驱动程序设置为从第二页开始,测试查找元素没有问题。
您的建议听起来很正确,要使用新选项卡,您必须将驱动程序切换到它。
这可以像这样简单地完成:
public void switchToNewWindow(){
wait(500);
List<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(tabs.size()-1));
}
切换回第一个 window 你可以使用这个:
public void switchToFirstWindow(){
List<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(0));
}
如果有超过 2 个选项卡,您可以切换到任何选项卡,如上所示切换到具有相应索引的选项卡。
您必须切换到新选项卡,因为驱动程序只会找到实际的选项卡 WebElements。 使用以下命令切换到新标签:
ArrayList<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.close(); //to close actual tab
driver.switchTo().window(tabs.get(1)); //then switch to new tab