[英]ClassNotFoundException on Maven Dependency Class org.apache.http.client
[英]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,請執行以下操作,它應該可以解決此問題:
為我工作。
指定對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.