Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 含Crome和Maven的硒不起作用。ClassNotFoundException:org.apache.http.auth.Credentials_Java_Maven_Google Chrome_Selenium_Ubuntu - Fatal编程技术网

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

Java 含Crome和Maven的硒不起作用。ClassNotFoundException:org.apache.http.auth.Credentials,java,maven,google-chrome,selenium,ubuntu,Java,Maven,Google Chrome,Selenium,Ubuntu,我想用Selenium运行无头Chrome,但此代码不起作用: ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--headless"); File file = new File("/usr/bin/chromedriver"); System.setProperty("webdriver.chrome.driver", file.getAbsolute

我想用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
线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/http/auth/Credentials 位于org.openqa.selenium.remote.HttpCommandExecutor.getDefaultClientFactory(HttpCommandExecutor.java:93) 位于org.openqa.selenium.remote.HttpCommandExecutor。(HttpCommandExecutor.java:72) 位于org.openqa.selenium.remote.service.DriverCommandExecutor.(DriverCommandExecutor.java:62) 位于org.openqa.selenium.chrome.ChromeDriverCommandExecutor。(ChromeDriverCommandExecutor.java:39) 位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:184) 位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:171) 位于org.openqa.selenium.chrome.ChromeDriver(ChromeDriver.java:158) 位于org.chrome.automation.Starter.main(Starter.java:20) 原因:java.lang.ClassNotFoundException:org.apache.http.auth.Credentials 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 8个以上 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>

org.seleniumhq.selenium
硒铬驱动器
3.4.0
org.seleniumhq.selenium
硒爪哇
3.4.0
我认为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>

org.apache.httpcomponents
httpclient
4.5.3
org.apache.httpcomponents
httpcore
4.4.6
但问题依然存在


请帮助使用headless Crome运行selenium。

我仅使用一个依赖项即可解决此问题:

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

org.seleniumhq.selenium
硒铬驱动器
2.53.1

它也适用于3.3.1、3.2.0。正如我所看到的,这个问题只发生在3.4.0版本中。

指定对
selenium chrome驱动程序的显式依赖性
肯定是错误的,因为
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);

禁用gpu
是一个选项;更多详情请参见。

我面临着同样的问题,不仅是chrome浏览器,还有其他浏览器。 似乎有一些罐子丢失了,请执行以下操作,它应该可以解决问题:

  • 结束日食
  • 转到“C:\Users\myuser.m2\repository”文件夹,并从此处删除所有文件和文件夹
  • 打开elclipse,选择您的项目,执行alt+f5并选中“强制更新快照”选项
  • 等到它建好了,现在就应该修好了
    为我工作

    确保类路径上存在此类。尝试在eclipse中打开它。如果它没有打开,试着手动下载jar我检查过了,知道什么?它在我的课堂路径中!我试图删除除chrome驱动程序之外的所有依赖项。它仍然在类路径中。名为httpclient-4.5.3.jar的jar文件。此外,您需要添加
    ——禁用gpu
    。正如您所见,这是一种推荐的方法@Madhan,stacktrace是关于错过的类:NoClassDefFoundError。这一论点如何解决?我这样问是因为当我尝试时,我也犯了同样的错误。我认为你的回答有误导性。如果你提到了一些绝对错误的东西,你应该添加正确的解决方案,并提到你称之为错误的东西可以很好地工作,只需再导入一个依赖项。这并不妨碍chrome驱动程序正常工作。对吗?你也可以看看我几周前的答案。问题只发生在selenium chrome驱动程序3.4.0上。@Pavlo我使用的是3.4.0,没有问题。我无法深入了解,因为没有资源检查所有环境详细信息并比较我和您的配置。它可以为某人工作,但对我来说不是。谢谢你的努力,让我知道更多关于这一点。