使用Java在Selenium WebDriver中处理窗口

问题描述 投票:0回答:1

通过Selenium WebDriver进行自动化时,我有以下方案。

在一个窗口中,我点击一个按钮。代码将对DB进行查询并显示包含其结果的窗口。我无法切换到新窗口。父窗口在单击按钮时关闭,我无法切换到新窗口,因为控件位于父窗口上,并且在屏幕上不可见。

有人可以帮我这个。谢谢

我的代码如下:

driver.findElement(By.xpath(".//*[@id='WIN_0_560700305']/div/div")).click();
window1=driver.getWindowHandle();
driver.switchTo().window(window1);
System.out.println(driver.getTitle());
windowList = driver.getWindowHandles();
System.out.println("Number of Windows-->" + driver.getWindowHandles().size());
iterator = windowList.iterator();
String window2 = null;
while(iterator.hasNext())
{
    System.out.println("Entering while loop");
    window2 = (String)iterator.next();
    System.out.println(driver.getTitle());
}
if (!(window1.equals(window2))){
    driver.switchTo().window(window2);
    System.out.println("Title of the page after - switchingTo: " +
        driver.getTitle());
    System.out.println("Current url" + driver.getCurrentUrl());
    driver.manage().window().maximize();
}
driver.findElement(By.xpath(".//*[@id='WIN_0_540000016']/div/div")).click();
java selenium-webdriver
1个回答
0
投票

我已经修改了你的代码,试试下面的代码,希望它能工作。

String window1=driver.getWindowHandle();
driver.findElement(By.xpath(".//*[@id='WIN_0_560700305']/div/div")).click();
System.out.println(driver.getTitle());
Set windowList = driver.getWindowHandles();
Iterator iterator = windowList.iterator();
String window2 = null;
while(iterator.hasNext())
{
    System.out.println("Entering while loop");
    window2 = iterator.next().toString();
    if(!(window1.equals(window2))){
       driver.switchTo().window(window2);
       System.out.println("Title of the page after - switchingTo: " +          
       driver.getTitle());
       System.out.println("Current url" + driver.getCurrentUrl());
       driver.manage().window().maximize();
    }
}
//Switched to new window, do operations in new window    ..
© www.soinside.com 2019 - 2024. All rights reserved.