node.js - 无论我做什么,Selenium 都不会在 headless 模式下启动 chrome

标签 node.js selenium selenium-webdriver selenium-chromedriver google-chrome-headless

我使用nodejs版本8.11.3和npm版本6.9.0以及chrome版本75.0.3770.90(最新)。我正在尝试使用 Selenium 来打开 headless Chrome 。但问题是,无论我尝试什么,它都不起作用。 我使用的是 Windows 10 版本 1903(内部版本 18362.175)。 我已经安装了selenium(npm i selenium-webdriver)并在我的Windows PATH中正确配置了它们。目前还没有任何其他的 Selenium 制剂。 我尝试使用从不同来源在网上找到的各种代码来运行 headless 模式。我尝试过的一个例子:

 let chrome = require('selenium-webdriver/chrome');
 let {Builder} = require('selenium-webdriver');

 let driver = new Builder()
     .forBrowser('chrome')
     .setChromeOptions(new chrome.Options().headless())
     .build();

可以在这里找到:https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome.html

或此代码:

const fs = require('fs');
const webdriver = require('selenium-webdriver');
const chromedriver = require('chromedriver');

const chromeCapabilities = webdriver.Capabilities.chrome();
chromeCapabilities.set('chromeOptions', {args: ['--headless']});

const driver = new webdriver.Builder()
  .forBrowser('chrome')
  .withCapabilities(chromeCapabilities)
  .build();

// Navigate to google.com, enter a search.
driver.get('https://www.google.com/');
driver.findElement({name: 'q'}).sendKeys('webdriver');
driver.findElement({name: 'btnG'}).click();
driver.wait(webdriver.until.titleIs('webdriver - Google Search'), 1000);

可以在这里找到:https://developers.google.com/web/updates/2017/04/headless-chrome#drivers

我还尝试使用我发现的 stackoverflow 线程中的不同代码片段。现在我故意复制粘贴这些代码片段,不是因为我自己写不了,而是因为我想使用应该100%工作的代码(因为它来自官方来源)来消除这个问题可能是我自己的问题。 该代码发生的情况是它会正常启动。所有的 Selenium 都工作正常,但它只是没有 headless 运行。我在控制台中也没有收到错误。

现在的问题是,我是否错过了一些我应该做的事情?我是否需要安装一些显而易见而没有人提及的东西?有什么办法可以解决这个问题吗? 感谢大家的回复!

最佳答案

尝试这个解决方案,我在 CI Gitlab 中的 headless Chrome 中运行了我的 selenium。我希望这会有所帮助

 driver = await new Builder()
    .forBrowser('chrome')
    .setChromeOptions(new chrome.Options().addArguments(['--headless','--no-sandbox', '--disable-dev-shm-usage']))
    .build();

我还在我的脚本中添加了这些来运行:

"confidence-check": "wdio wdio.conf.js",
"automate-testing": "npm run confidence-check --host=selenium__standalone-chrome",
"automate-ci": "start-server-and-test start http://localhost:3000 automate-testing"

您只需在根目录中设置wdio.conf.js文件即可

关于node.js - 无论我做什么,Selenium 都不会在 headless 模式下启动 chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56614874/

相关文章:

javascript - 数组递增 Javascript/node js/mongodb

python - 获取网页python的总页数

python - 当要求查找元素时出现奇怪的 Python Selenium 错误消息

java - Selenium 没有使用 Chromedriver 通过 xpath 找到元素

selenium-webdriver - 测试输入字段是否获得焦点

html - 如果可能,我如何使用 selenium 来识别嵌套框架中的元素?

node.js - strip 稍后付款直接收费,创建 token 错误,客户必须附加有效的付款来源

jquery - requirejs 客户端/服务器模块与 jquery

ios - 身份验证(护照)足以保证 Node js 后端服务器的安全性?

java - 没有getTitle()方法为什么获取不到title标签的文本