【发布时间】:2017-01-08 07:21:08
【问题描述】:
有很多 Stack Overflow 给出了如何处理 JavaScript 窗口的解决方案,但我的情况非常具体。
我正在开发我们的网络基础应用程序的自动化流程。最近开发团队推出了一个 MODAL(这意味着该窗口出现在整个网页的顶部,禁用所有元素定位器)JavaScript 弹出式调查窗口,提示我们的客人是否参加此调查。我并行运行测试(一次两个或三个几十个线程)。对于可以手动与给定页面交互的真实用户,有几种方法可以摆脱窗口:单击“否”按钮,或仅单击页面上的任意位置。我找到了如何使用 Selenium 点击“NO”按钮的方法,其中 driver.findElement(By.xpath("xpathOfNOButton").click
第一个问题是:下次我运行测试时,不知道该模态窗口何时会出现在哪个页面上。在某些情况下,模态窗口根本不出现。有时用户可能只是打开主页,窗口马上出现,有时可能需要四到六分钟。没有逻辑。开发团队只解释说这个 JavaScript 模态窗口将为 33% 的网站访问者显示(第三方供应商,无内部控制)。而已。因此,诸如等待一定时间,然后单击“否”按钮的解决方案将不起作用。不存在可以触发此模式窗口弹出的步骤(如在某些其他应用程序上)。
尝试过的解决方案:因为这只发生在我们的 Web 应用程序的生产版本上,所以我为 Firefox 配置文件设置了一个逻辑,一旦它使用 www. URL 启动,它将禁用页面上的所有 JavaScript。但是这个解决方案完全破坏了所有页面,因为许多其他功能都依赖于此。
问题:Java 或 Selenium 中是否有任何方法可以检查给定页面的整个 HTML 结构,以确定该模式弹出脚本是否存在于 HTML 中?
我知道这可能会增加我的测试时间,因为我必须每隔一页检查一次。
第二个问题是:有没有办法在不使用 Selenium WebDriver 指定特定元素的情况下点击页面的空白区域?
如果是,并且模态窗口被捕获,我可以执行此操作以关闭模态窗口。
【问题讨论】:
-
据我了解,这是一个自定义 js 警报?
-
@NickQ 你好。不是很熟悉自定义和非自定义的 js Alerts,但这是 HTML 结构的那一行对应我的头疼 ips-invite.iperceptions.com/invitations/invitationsJS/125/…">
-
这个模型窗口是如何创建的?如果这是具有特定名称的 DIV 元素,您可以在页面上查看它们。关于第二个问题,因为这是一个模型窗口,所以它的大小肯定会比页面小,所以只需点击任何距离页面角落可能只有几个像素的地方。
-
@Isiva 是的,该模式窗口存在一个带有 id 的 div。但是它可以在几秒钟内弹出,或者有时可能需要 3-5 分钟才会出现。问题:是否可以先查找此 div,如果找到,以某种方式禁用它,然后才执行任何其他步骤?
-
看看这里,可能有帮助stackoverflow.com/questions/39145178/…
标签: javascript java html selenium popup