提问者:小点点

如何在java中使用chromedriver启动Selenium


我想用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?

共1个答案

匿名用户

这是java。当我们试图调用抽象方法时,通常会抛出lang.AbstractMethodError。

我们知道不能调用抽象方法,如果我们尝试这样做,那么您将收到编译时错误。所以您可能会想这个错误是如何在运行时抛出的?。

原因是二进制不兼容这意味着什么?

每当一个类被修改时,引用这个(修改后的)类的其他类将不会知道它所做的更改。所以所有的类都必须作为一个整体编译。如果没有,那么您可能会遇到不兼容的类更改错误的子类之一。

解决

>

  • 检查System.setProperty路径是否正确例如,在System.setProperty()中提到KeyValue时,您必须转义反斜杠(\\). // 这在您的情况下似乎没问题。

    检查所需的selenium文件是否添加到项目的构建路径中