【问题标题】:Nightwatch tests do not find elements in Headless chrome modeNightwatch 测试在 Headless chrome 模式下找不到元素
【发布时间】:2017-09-27 16:01:18
【问题描述】:

我正在尝试让我的测试(用 Nightwatch.js 编写)在无头 chrome 中本地运行。 但是,测试失败,因为它们无法在无头模式下找到元素(尽管它们在无头模式下工作)。

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

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

【问题讨论】:

  • 您找到解决方案了吗?
  • 我在 mac 上遇到了同样的问题。很高兴收到您的来信!

标签: selenium automated-tests nightwatch.js headless-browser google-chrome-headless


【解决方案1】:

所以,正如我在回复中所说,我昨天遇到了同样的问题,我只是想在谷歌主页上做一个虚拟测试。今天早上,我带着新鲜的大脑试图解决这个问题。我有个绝妙的主意,在 nightwatch 找不到元素之前截屏。

事实证明,“普通”的 chrome 主页是英文的,而“headless” chrome 的主页是法语的,出于某种原因。

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

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

我仍然很难用英语设置它(很奇怪),但我希望这会在未来为某人节省几个小时

【讨论】:

  • 哈!我的一个朋友遇到了一个不相关的错误弹出窗口问题,该弹出窗口涵盖了某些元素。测试在非无头模式下通过,因为窗口的大小有点大,并且弹出窗口没有出现在可点击元素的上方。在正确的时间截屏的想法确实很棒!非常感谢@Jeremad!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多