【发布时间】:2018-01-09 06:58:00
【问题描述】:
我的应用程序会在单击按钮时打开一个新窗口,我需要在该窗口中执行一些操作。但是 selenium webdriver 的响应 getWindowHandles() 方法中只有一个窗口 id。如果在打开新窗口后调用 getWindowHandles() 有延迟,则会发生这种情况。硒存在一个已知问题。 https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration
但即使是解决方案也不适合我。
代码如下
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
RemoteWebDriver driver = new
RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
driver.get("https://<url>");
WebElement userName = driver.findElement(By.name("usr_name"));
userName.sendKeys("ABCD");
WebElement password = driver.findElement(By.name("usr_password"));
password.sendKeys("password");
WebElement login = driver.findElement(By.name("OK"));
login.click();
WebElement popup= driver.findElement(By.name("popup"));
popup.click();
Thread.sleep(1000);
Set<String> windowHandles = driver.getWindowHandles();
System.out.println(windowHandles);
Set "windowHandles" 将只返回一个窗口:
"[fcdad457-9090-4dfd-8da1-acb9d6f73f74]"
但如果我取消睡眠。它将返回两个窗口 ID:
[90cc6006-0679-450c-a5b3-6602bcb41a16, 7211bbfd-2616-4460-97e7-56c0e632c3bb]
我无法移除睡眠,因为这只是一个示例程序,在实际应用程序中会有一些延迟。请告诉我您的想法。此问题仅适用于 IE11。
蓝屏 - 主页; 灰屏 - 弹出窗口
【问题讨论】:
-
您能否给出您弹出窗口的完整屏幕截图?我想确定它是一个实际的新浏览器窗口/选项卡或模拟弹出窗口
-
@yong 添加截图
-
你说的弹窗是哪一个?灰色背景的大窗户?还是最前面的那个小白底?
-
灰色背景的大窗口。您在其后面看到的(蓝色背景)是父窗口。
-
试试这篇文章中的解决方案。如果不能解决您的问题,请尝试使用最新的 IEDriver
标签: java selenium selenium-webdriver internet-explorer-11 desiredcapabilities