无论我怎么做,Selenium都无法以无头模式启动Chrome。

3

我正在使用Node.js版本8.11.3和npm版本6.9.0,以及Chrome 75.0.3770.90(最新版本)。我尝试使用Selenium打开一个无头浏览器。但是问题是,无论我尝试什么,它都不起作用。 我使用的操作系统是Windows 10版本1903(Build 18362.175)。 我已经安装了selenium(npm i selenium-webdriver),并在我的Windows PATH中正确配置了它们。没有进行任何其他的selenium准备工作。 我尝试过从不同来源找到的各种代码,以使无头模式运行。我尝试了一个示例:

 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上找到的代码片段。现在,我故意复制粘贴这些代码片段,不是因为我不能自己写,而是因为我想使用应该百分之百可行的代码(因为它来自于官方来源),以排除问题可能是我的问题的情况。 当运行该代码时,它会像正常情况一样启动。所有selenium都工作良好,但它只是没有无头运行。我在控制台中也没有收到任何错误。

现在的问题是,我错过了什么事情吗?我需要安装一些显而易见的东西吗?是否有任何方法来解决问题? 感谢所有回复!


1
你能否尝试将 --headless 替换为 -headless - Ardesco
你能试试这个可能的解决方案吗?它说你可能需要按照这里的回答设置窗口大小:https://dev59.com/b7Lma4cB1Zd3GeqPYUUU#54985009 - Keff
@Ardesco,那个交换解决了我的问题。谢谢你。 - Ask P
1个回答

2

尝试使用这个解决方案,我在CI Gitlab中使用无头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文件即可。


你的addArguments在Ubuntu 18.0.4上为我解决了一个类似的问题,当时我遇到了错误信息:WebDriverError: unknown error: Chrome failed to start: exited abnormally. (unknown error: DevToolsActivePort file doesn't exist) - phatfingers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接