簡體   English   中英

硒與Crome和Maven不起作用。 ClassNotFoundException:org.apache.http.auth.Credentials

[英]Selenium with Crome and Maven not works. ClassNotFoundException: org.apache.http.auth.Credentials

我想使用Selenium運行無頭Chrome ,但是此代碼不起作用:

    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--headless");
    File file = new File("/usr/bin/chromedriver");
    System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
    WebDriver driver = new ChromeDriver(chromeOptions);

它可以正常編譯,但是在運行時使用stacktrace崩潰:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials
    at org.openqa.selenium.remote.HttpCommandExecutor.getDefaultClientFactory(HttpCommandExecutor.java:93)
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:72)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.<init>(DriverCommandExecutor.java:62)
    at org.openqa.selenium.chrome.ChromeDriverCommandExecutor.<init>(ChromeDriverCommandExecutor.java:39)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:184)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:171)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:158)
    at org.chrome.automation.Starter.main(Starter.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.http.auth.Credentials
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 8 more

POM僅包含兩個依賴項:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.4.0</version>
    </dependency>

我認為Selenium依賴關系中存在問題,因為它們依賴於某些apache代碼,而不下載依賴關系的組件。 我試圖添加apache依賴項,例如:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.4.6</version>
    </dependency>

但是問題仍然存在。

請幫助運行無頭Crome硒。

我只能使用一種依賴關系來解決:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>2.53.1</version>
    </dependency>

它還適用於3.3.1、3.2.0。 如我所見,問題僅在3.4.0版本中發生。

我不僅遇到了chrome,而且也遇到了其他瀏覽器的相同問題。 似乎缺少了一些jar,請執行以下操作,它應該可以解決此問題:

  1. 關閉日食
  2. 轉到“ C:\\ Users \\ myuser.m2 \\ repository”文件夾,然后從此處刪除所有文件和文件夾
  3. 打開elclipse,選擇您的項目,然后執行alt + f5並選中“強制更新快照”選項。
  4. 等到它生成后,現在應該修復它。

為我工作。

指定對selenium-chrome-driver顯式依賴絕對錯誤的 ,因為selenium-java已經包含了這一點。

要使Chrome在無頭模式下運行,您需要Chrome最低版本59(Windows上為60版本)和以下代碼:

System.setProperty("webdriver.chrome.driver", ...);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("headless", "disable-gpu");
WebDriver driver = new ChromeDriver(chromeOptions);

disable-gpu是必需選項; 有關更多詳細信息,請參見此討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM