如何在使用机器人或自动执行并行执行期间处理基于窗口的弹出窗口

时间:2017-04-04 04:59:40

标签: java multithreading selenium

在我们的项目中,我们遇到了一个情况,在点击“登录”后处理基于Windows的弹出窗口。按钮。

我们使用AutoIt / Robot处理它。

但是当我们在本地计算机上并行执行期间尝试处理弹出窗口时,会出现真正的问题。

尝试在多个浏览器上处理基于Windows的弹出窗口时,只处理前面聚焦/显示的浏览器,其余浏览器autoIt / Robot无法处理弹出窗口。

请建议

2 个答案:

答案 0 :(得分:0)

考虑更改处理弹出式窗口的方式。每个浏览器实例都应该独立于其他浏览器实例。有许多不同的解决方案来处理弹出窗口,因为有很多方法可以实现弹出窗口。 请考虑this question了解详细信息。

简而言之:处理弹出窗口的主要方法是: 使用windowHandle:

driver.switchTo().window(subWindowHandler); // switch to popup window

使用提醒

Alert alert = driver.switchTo().alert();
alert.accept();

使用常规方法处理元素时,如果弹出窗口可以通过这种方式访问​​:

WebElement sign = driver.findElement(By.linkText("Sign in"));
sign.click();
WebElement email_id= driver.findElement(By.id("c_uname"));
email_id.sendKeys("hi");

<强> UPD 这里更重要的一点是,您的代码应该能够在处理弹出窗口时处理适当的浏览器实例。否则,没有任何一个方面可行。这是另一个大话题,我不知道你的并行性实现,所以也要注意它

答案 1 :(得分:0)

没有办法处理并行执行。当2个基于窗口的弹出窗口打开时,机器人或自动会混淆