【问题标题】:Selenium doesnt start chrome in headless mode, no matter what I doSelenium 不会在无头模式下启动 chrome,无论我做什么
【发布时间】:2023-03-10 20:18:01
【问题描述】:

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

 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 线程中的不同代码 sn-ps。现在我故意复制粘贴这些代码 sn-ps,不是因为我不能自己编写它,而是因为我想使用应该 100% 工作的代码(因为它来自官方来源)来消除问题可能是我自己的问题。 该代码发生的情况是它只是正常启动。所有的硒都工作正常,但它只是没有无头运行。我也没有在控制台中收到错误。

现在的问题是,我是否错过了我应该做的事情?我是否需要安装一些如此明显以至于没有人提及的东西?有没有办法解决这个问题? 感谢所有回复!

【问题讨论】:

  • 你能不能把--headless换成-headless
  • 你能试试这个可能的解决方案吗?它说您可能需要按照此处的回答设置窗口大小:stackoverflow.com/a/54985009/5900163
  • @Ardesco 交换为我解决了这个问题。谢谢。

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


【解决方案1】:

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

 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文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2018-01-20
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多