我有一个项目已经运行了很长时间了。 最近(几周)系统测试失败了。
经过大量调查,我们得出结论,量角器无法识别并关闭警报。
以前使用的代码
hero
现在抛出错误:
exports.removeFaq = function( index ){
console.log('deleting item at',index);
exports.getContent(index).$( '[ng-click="removeFAQ($index)"]').click();
browser.sleep(2000);
browser.switchTo().alert().accept();
return browser.sleep(2000);
};
和(使用元素资源管理器):
WebDriverError: unknown error: cannot determine loading status
from unexpected alert open
(Session info: chrome=52.0.2743.116)
(Driver info: chromedriver=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 4.2.0-38-generic x86_64) (WARNING: The server did not provide any stacktrace information)
我们试过了
- > browser.switchTo().alert().accept();
UnexpectedAlertOpenError: unexpected alert open: {Alert text : are you sure you want to remove this helper content?}
(Session info: chrome=52.0.2743.116)
(Driver info: chromedriver=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 4.2.0-38-generic x86_64) (WARNING: The server did not provide any stacktrace information)
而不是睡觉。
- 睡了很长时间
- 忽略角度。
似乎没有任何差别。
我该如何解决这个问题?
答案 0 :(得分:2)
我们在几天内遇到了同样的问题。看起来我们在chromedriver 2.21。我更新到最新版本(2.23),这似乎解决了这个问题。
命令webdriver-manager update --chrome
对我不起作用,所以我必须下载zip并将其解压缩到我的selenium目录。在量角器下。
请注意,有一个新的量角器主要版本及更新版本。因此更新量角器也可能解决问题。
用于量角器版本3.x
您还可以使用正确的版本修改文件node_modules/protractor/config.json
,然后运行webdriver-manager update
用于量角器版本4.x
您应该修改文件./node_modules/protractor/node_modules/webdriver-manager/config.json
。
答案 1 :(得分:1)
我们如何确定2000ms
的睡眠足够好?正是因为这个原因,在测试中不推荐睡眠。相反,您可以使用正确的等待并轮询警报。通过这种方式,您可以知道在某个约定的超时后,警报从未出现并且测试正确无效
//wait maximum up to lets 5s before giving up
browser.wait(protractor.ExpectedConditions.alertIsPresent(), 5000);
browser.switchTo().alert().accept();