我想用chrome自动化一些操作,我使用的是Selenium和chromedriver,但在执行时我遇到了这个错误
Exception in thread "main" java.lang.AbstractMethodError: org.openqa.selenium.remote.service.DriverService$Builder.createArgs()Lcom/google/common/collect/ImmutableList;
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:332)
at org.openqa.selenium.firefox.GeckoDriverService.createDefaultService(GeckoDriverService.java:94)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:114)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:94)
at App.main(App.java:12)
我看到我需要用系统放置驱动程序的路径。setProperty,但我已经做了
这是我的代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class App {
public static void main(String[] args) throws Exception {
System.out.println("Hello, World!");
System.setProperty("webdriver.chrome.driver","C:\\laragon\\www\\seleniumIndeed\\src\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com");
driver.quit();
}
}
Did i miss something?
这是java。当我们试图调用抽象方法时,通常会抛出lang.AbstractMethodError。
我们知道不能调用抽象方法,如果我们尝试这样做,那么您将收到编译时错误。所以您可能会想这个错误是如何在运行时抛出的?。
原因是二进制不兼容这意味着什么?
每当一个类被修改时,引用这个(修改后的)类的其他类将不会知道它所做的更改。所以所有的类都必须作为一个整体编译。如果没有,那么您可能会遇到不兼容的类更改错误的子类之一。
解决
>
检查System.setProperty
路径是否正确例如,在System.setProperty()
中提到Key
和Value
时,您必须转义反斜杠(\\
). // 这在您的情况下似乎没问题。
检查所需的selenium文件是否添加到项目的构建路径中