我编写了一系列在独立执行时有效的验收测试。我正在使用 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 强制关闭当前窗口并尝试新窗口?
谢谢!
答案 0 :(得分:1)
我发现了不同测试框架的类似问题:Prevent onbeforeunload dialog from interfering with tests
建议的解决方案是在每个页面加载后执行 window.onbeforeunload = undefined;
。
使用 Codeception,您必须使用 executeJS
方法:
$I->amOnPage('/');
$I->executeJS('window.onbeforeunload = undefined;');
答案 1 :(得分:0)
答案 2 :(得分:0)
在设置一段时间后,唯一通过的方法是将 restart
属性设置为 true(默认为 false):
WebDriver:
url: 'http://localhost:8080/'
wait: 2
window_size: false # disabled in ChromeDriver
port: 9515
browser: chrome
restart: true
这将关闭浏览器窗口并且不会显示对话框。下一次测试将打开一个新的浏览器。
这个解决方案会使验收运行测试变得更慢,所以我很想看看其他人是否有更好的解决方案!
值得注意的是,我尝试使用 unexpectedAlertBehaviour
capability,无论我拥有什么价值,都不会解除警报。