在没有显示器的Linux服务器上运行Chrome WebDriver

31

2
是的,那应该可以正常工作。你尝试过什么? - jarib
4个回答

26

我也曾面临同样的挑战,需要在Linux系统上设置selenium + chromedriver,以下是我的笔记:

先决条件:

  1. 安装JRE以运行selenium jar文件

  2. 安装selenium服务器

    https://code.google.com/p/selenium/downloads/list获取jar文件

  3. 安装xvfb(你似乎已经完成这一部分)

  4. 为你的Linux发行版安装Google Chrome

  5. 下载chrome driver,可从此处获取:https://sites.google.com/a/chromium.org/chromedriver/downloads

  6. 安装其他可能需要的selenium依赖项(但以上是使chromedriver工作所需的最少要求)

运行:

  1. 运行xvfb

Xvfb :1 -screen 5 1024x768x8 &

export DISPLAY=:1.5

  1. 使用ChromeDriver选项运行selenium服务器jar文件。命令如下:

java -jar selenium-server-standalone-2.30.0.jar -Dwebdriver.chrome.bin=/path/to/google-chrome -Dwebdriver.chrome.driver=/path/to/chromedriver

  1. selenium服务器日志应输出类似于以下内容:

Mar 19, 2013 10:07:27 AM org.openqa.grid.selenium.GridLauncher main INFO: Launching a standalone server

Setting system property webdriver.chrome.bin to {location of google-chrome}

将系统属性webdriver.chrome.driver设置为{chromedriver的位置}

10:07:34.258 信息 - RemoteWebDriver实例应连接到:http://127.0.0.1:4444/wd/hub

10:07:34.259 信息 - Jetty版本/5.1.x 10:07:34.259 信息 - 已启动HttpContext[/selenium-server/driver,/selenium-server/driver] ...

参考: http://www.yann.com/en/use-xvfb-selenium-and-chrome-to-drive-a-web-browser-in-php-23/08/2012.html

干杯!


11
根据程序化设置 ChromeDriver 的 SetEnvironmentProperty ,您可以执行以下操作:
service = new ChromeDriverService.Builder()
    .usingChromeDriverExecutable(new File("/path/to/chromedriver"))
    .usingAnyFreePort()
    .withEnvironment(ImmutableMap.of("DISPLAY",":20"))
    .build();

这里是withEnvironment文档


7

3
看起来你的改进请求被标记为已修复。你能否更改你的答案,解释如何使用你的修复方案? - Andrey Fedorov
更新后,添加了Stephen下面的回复链接,展示如何设置显示环境变量。 - Jaie Wilson

0

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