Nightwatch测试在Headless chrome模式下找不到元素

问题描述 投票:1回答:2

我试图让我的测试(用Nightwatch.js编写)在无头镀铬本地运行。但是,测试失败,因为它们无法在无头模式下找到元素(尽管它们在没有无头模式的情况下工作)。

如果我查看失败的屏幕截图,我只会看到一个白屏。但如果测试检查“body”元素,它实际上是通过。所以我认为页面已加载,但也许无头的chrome,由于某种原因,无法加载javascript?后来我等待div和按钮等几秒钟可见,但它找不到它们。

你有什么想法可能有什么不对吗?我在nightwatch配置文件中的desiredCapabilities中添加了--headless和--disable-gpu标志。

selenium automated-tests nightwatch.js headless-browser google-chrome-headless
2个回答
0
投票

我想你应该在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


0
投票

所以,正如我在回复中所说,我昨天遇到了同样的问题,我只是想在谷歌主页上进行虚拟测试。今天早上有一个新鲜的大脑,我试图解决这个问题。我有一个绝妙的主意,即在守夜人未能找到元素之前拍摄截图。

事实证明,“普通”镀铬有英文主页,而“无头”镀铬有法语主页,出于某种原因。

我发现了这个:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1925可能正在解释原因。我发现始终使用正确语言的解决方法是:

"chromeOptions" : {
  "args" : ["--lang=fr", "--headless"]
}

我仍然很难用英语(很奇怪)设置它,但我希望将来能节省几个小时

© www.soinside.com 2019 - 2024. All rights reserved.