如何从主窗口切换到弹出窗口?

Cod*_*tic 5 java selenium webdriver modal-dialog

我不是在谈论像警报,确认或提示对话框这样的弹出窗口.在应用程序中,如果我点击一个按钮,弹出窗口就会被打开.我无法将WebDriver切换到弹出窗口.

我试过使用getWindowHandles()但它只返回主窗口句柄.

我也尝试过switchTo.window("windowname"),但它没有用.

Pra*_*kla 5

通常,模块化Windows是同一个DOM的一部分,与javascripts警报不同.只有将它们与页面的其他部分区分开来的是它们处于不同的框架中.

尝试查看此模块化窗口是否位于框架或iframe标记内.如果父级中的任何一个是frame或iframe,则必须先将该上下文更改为该帧,然后才能对模态窗口执行任何操作.

因此,找到框架执行a driver.switchTo().frame()然后对您想要的元素执行操作.一旦完成操作,这很可能会将您带回主页面.使用driver.switchTo().defaultContent()把焦点回到主界面.

这个问题将有所帮助.

如果这不起作用,那么查看页面或其HTML会很有帮助.


Cod*_*tic 3

//handle of the master window before clicking the link
String master = driver.getWindowHandle();

driver.findElement(By.linkText("Click me")).click();

//logic for waiting for the popup, checking the size to become greater than 1 or breaking after sometime to avoid the infinite loop.
int timeCount = 1;

do
{
   driver.getWindowHandles();
   Thread.sleep(200);
   timeCount++;
   if ( timeCount > 50 ) 
   {
       break;
   }
}
while ( driver.getWindowHandles().size == 1 );

//Assigning the handles to a set
Set<String> handles = driver.getWindowHandles();
//Switching to the popup window.
for ( String handle : handles )
{
    if(!handle.equals(master))
    {
         driver.switchTo().window(handle);
    }
}
Run Code Online (Sandbox Code Playgroud)