Java在linux服务器上执行chromedriver

时间:2018-02-23 09:57:30

标签: java linux selenium selenium-webdriver selenium-chromedriver

我正在使用Eclipse,Selenium和chromedriver来促进网站数据的无头检索。虽然我在笔记本电脑上运行良好,但我已经将WAR版本部署到Java / Linux托管服务中,并且收到以下错误,表明它无法找到chromedriver。

类型例外报告

消息:

The driver executable does not exist: /drivers/chromedriver

描述:

The server encountered an unexpected condition that prevented it from fulfilling the request.

例外:

java.lang.IllegalStateException: The driver executable does not exist: /drivers/chromedriver
    com.google.common.base.Preconditions.checkState(Preconditions.java:534)
    org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:136)
    org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:131)
    org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
    org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
    org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:329)
    org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
    com.carsales.rego.CarRegoAction.doPost(CarRegoAction.java:57)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

最初我有windows位置C:\ java \ selenium \ drivers \ chromedriver.exe

但是我上传了Linux版本并放置在&#34; / drivers / chromedriver&#34;

Partial Code看起来像这样......

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String carRegistrationNumer = request.getParameter("cargo");

    System.setProperty("webdriver.chrome.driver",
            "/drivers/chromedriver");

    ChromeOptions options = new ChromeOptions();
       options.addArguments("headless");
       options.addArguments("window-size=1200x600");

    WebDriver webDriver = new ChromeDriver(options);

是的,我已经将文件夹和chromedriver的权限设置为777(chmod 777),所以应该没问题 - 只是找不到它。

请帮忙......

3 个答案:

答案 0 :(得分:0)

尝试在Chrome驱动程序中使用这些选项: -

        Options.addArguments("--no-sandbox");
        Options.addArguments("start-maximized");
        Options.addArguments("disable-notifications");
        Options.addArguments("allow-running-insecure-content");

答案 1 :(得分:0)

在Exception中,strre是“驱动程序可执行文件不存在:/ drivers / chromedriver”所以你应该检查路径是否正确。

如果您想在文件中订购,您可以将驱动程序放在您的资源目录中以用于Java项目,例如。 “SRC /测试/资源/驱动器/ chromedriver”

答案 2 :(得分:0)

当您在 Linux 平台上的 headless 模式下使用 chromedriver 时,您应该使用以下选项:< / p>

System.setProperty("webdriver.chrome.driver", "/drivers/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
options.addArguments("--disable-gpu");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
options.addArguments("window-size=1200x600");
options.addArguments("--no-sandbox");
WebDriver webDriver = new ChromeDriver(options);
  

注意:如果您在 Linux 平台上的无头模式下使用 chromedriver ,则参数禁用-gpu 是至关重要的。见Getting Started with Headless Chrome