使用Chromedriver(Codeception)自动关闭离开页面对话框



我已经编写了一系列验收测试,这些测试在独立执行时可以工作。我正在使用ChromeDriver与Codeception进行此测试。

然而,当我从一个测试类运行所有过程时,我会得到一个关于的对话框

This page is asking you to confirm that you want to leave - data you have entered may not be saved.

这是一个浏览器模式警报,因此随后的所有测试都会失败,因为浏览器无法离开此页面。

Codeception或Chromedriver中是否有一种方法可以接受带有默认键的对话框,以便按顺序执行其他测试?或者告诉Codeception强制关闭当前窗口并尝试新窗口?

谢谢!

我在不同的测试框架中发现了类似的问题:防止onbeforeunload对话框干扰测试

建议的解决方案是在每次页面加载后执行window.onbeforeunload = undefined;

对于Codeception,您必须使用executeJS方法:

$I->amOnPage('/');
$I->executeJS('window.onbeforeunload = undefined;');

玩了一段时间设置后,唯一的方法就是将restart属性设置为true(默认为false(:

WebDriver:
url: 'http://localhost:8080/'
wait: 2
window_size: false # disabled in ChromeDriver
port: 9515
browser: chrome
restart: true

这将关闭浏览器窗口,并且不会显示对话框。将为下一次测试打开一个新浏览器。

这个解决方案会使验收运行测试变得更加缓慢,所以我很想看看是否有其他人有更好的解决方案!

值得注意的是,我尝试过使用unexpectedAlertBehaviour功能,无论我有什么价值,警报都不会被解除。

我相信你可以注入jQuery来删除确认框。(免责声明:并非网站编码人员(。

编辑:我认为这不可行

请参阅弹出之前删除警报框

相关内容

  • 没有找到相关文章

最新更新