Selenium webDriver 2.46使用switchto.window挂在切换窗口上

时间:2015-07-24 10:33:08

标签: java internet-explorer selenium selenium-webdriver

我们的测试用例中有一个场景,我们必须将控制从父窗口切换到子窗口(单独)。

我们可以使用以下代码在Chrome和FF上执行此操作:

Set<String> winHandles = gblConstants.objdriver.getWindowHandles();

System.out.println(gblConstants.objdriver.getWindowHandles().size());

for (String winHandle : winHandles )
{

if(!(winHandle.equals(Keywords.parentWindowHandle)))
{

  WebDriver driver = gblConstants.objdriver.switchTo().window(winHandle);

  blnRes = true;

  driver.window().maximize();

  break;                            

}             
}

但是当我们尝试在 IE11 上执行上述代码时,执行会冻结在:

 WebDriver driver = gblConstants.objdriver.switchTo().window(winHandle);

客户端:Java,

Selenium WebDriver - 2.46

操作系统:Windows 7

请帮助完成这项工作。提前谢谢。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,直到有人提醒我运行我们用来设置IE进行webdriver测试的配置脚本。可能这些人中的一个(或多个)会为你做这个伎俩。我的测试至少不再悬而未决。

@ECHO OFF
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Zoom" /v "ZoomFactor" /t REG_DWORD /d 0x000186a0 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1" /v "2500" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2" /v "2500" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3" /v "2500" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4" /v "2500" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main" /v "Check_Associations" /t REG_SZ /d "no" /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation" /v "IntranetCompatibilityMode" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Recovery" /v "AutoRecover" /t REG_DWORD /d 0x00000002 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2" /v "Flags" /t REG_DWORD /d 0x00000043 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\global.pvt\*.pbi" /v "*" /t REG_DWORD /d 0x00000002 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2" /v "2101" /t REG_DWORD /d 0x00000000 /f
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client" /v "RemoteDesktop_SuppressWhenMinimized" /t REG_DWORD /d 0x00000002 /f

答案 1 :(得分:0)

我假设新版本的selenium不能正确支持IE11。请尝试使用以下代码。它看起来类似于你的代码。但是,它可能会奏效。

String parentWindow = driver.getWindowHandle();             设置handles2 = driver.getWindowHandles();                for(String windowHandle:handles2)                    {                    如果(!windowHandle.equals(parentWindow))                       {                       。driver.switchTo()窗口(windowHandle);                       driver.window()最大化();                      打破;                       }                    }