Java 如何在Selenium中有效管理浏览器选项卡\窗口?
这是我用来学习Selenium的书中的一个代码片段Java 如何在Selenium中有效管理浏览器选项卡\窗口?,java,selenium,selenium-webdriver,selenium-ide,Java,Selenium,Selenium Webdriver,Selenium Ide,这是我用来学习Selenium的书中的一个代码片段 public class WindowHandlingTest { WebDriver driver; @BeforeMethod public void setup() throws IOException { System.setProperty("webdriver.chrome.driver", "./src/test/resources/drivers/chromedriver"); dr
public class WindowHandlingTest {
WebDriver driver;
@BeforeMethod
public void setup() throws IOException {
System.setProperty("webdriver.chrome.driver",
"./src/test/resources/drivers/chromedriver");
driver = new ChromeDriver();
driver.get("http://guidebook.seleniumacademy.com/Window.html");
}
@Test
public void handleWindow() {
String firstWindow = driver.getWindowHandle();
System.out.println("First Window Handle is: " + firstWindow);
WebElement link = driver.findElement(By.linkText("Google Search"));
link.click();
String secondWindow = driver.getWindowHandle();
System.out.println("Second Window Handle is: " + secondWindow);
System.out.println("Number of Window Handles so for: "
+ driver.getWindowHandles().size());
这段代码的问题是,当打开一个新选项卡时,selenium仍然认为第一个选项卡已打开,这使得结果完全错误。只有在创建所有窗口的ArrayList并按索引引用特定的选项卡/窗口时,代码才能按预期工作。是否有其他管理浏览器选项卡/窗口的“正确”方法?书中的代码是否不正确 getWindowHandle()
(单数)将获得当前聚焦窗口的句柄
getWindowHandles()
(“s”)将按打开顺序获取当前打开的所有窗口/选项卡的句柄
只有在创建所有窗口的ArrayList并按索引引用特定的选项卡/窗口时,代码才能按预期工作
因此,它认为这是正确的方法。在链接之后。单击()代码>首先需要切换,然后才能处理新选项卡
link.click();
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
String secondWindow = driver.getWindowHandle();
System.out.println("Second Window Handle is: " + secondWindow);
System.out.println("Number of Window Handles so for: "
+ driver.getWindowHandles().size());
link.click();
ArrayList tabs=新的ArrayList(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
字符串secondWindow=driver.getWindowHandle();
System.out.println(“第二个窗口句柄为:“+secondWindow”);
System.out.println(“因此的窗口句柄数:”
+driver.getWindowHandles().size());
相关信息。