Nightwatch测试在Headless chrome模式下找不到元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nightwatch测试在Headless chrome模式下找不到元素相关的知识,希望对你有一定的参考价值。
我试图让我的测试(用Nightwatch.js编写)在无头镀铬本地运行。但是,测试失败,因为它们无法在无头模式下找到元素(尽管它们在没有无头模式的情况下工作)。
如果我查看失败的屏幕截图,我只会看到一个白屏。但如果测试检查“body”元素,它实际上是通过。所以我认为页面已加载,但也许无头的chrome,由于某种原因,无法加载javascript?后来我等待div和按钮等几秒钟可见,但它找不到它们。
你有什么想法可能有什么不对吗?我在nightwatch配置文件中的desiredCapabilities中添加了--headless和--disable-gpu标志。
我想你应该在Nightwatch.js中声明二进制路径
如果您使用的是linux,请尝试使用它,它对我来说非常适合:
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true,
"chromeOptions": {
"args": [
"headless", "disable-gpu"
],
"binary": "/usr/bin/google-chrome"
}
}
如果您使用的是Mac,请替换二进制路径,例如/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
所以,正如我在回复中所说,我昨天遇到了同样的问题,我只是想在谷歌主页上进行虚拟测试。今天早上有一个新鲜的大脑,我试图解决这个问题。我有一个绝妙的主意,即在守夜人未能找到元素之前拍摄截图。
事实证明,“普通”镀铬有英文主页,而“无头”镀铬有法语主页,出于某种原因。
我发现了这个:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925可能正在解释原因。我发现始终使用正确语言的解决方法是:
"chromeOptions" : {
"args" : ["--lang=fr", "--headless"]
}
我仍然很难用英语(很奇怪)设置它,但我希望将来能节省几个小时
以上是关于Nightwatch测试在Headless chrome模式下找不到元素的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Nightwatch 测试的自定义命令中添加嵌套函数 javascript - forEach - 循环遍历元素