当前位置: 首页 > 知识库问答 >
问题:

如何在java中使用chromedriver启动Selenium

傅越
2023-03-14

我想用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个答案

东方嘉木
2023-03-14

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

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

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

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

解决

>

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

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

  •  类似资料:
    • 我为chromedriver设置了哪些选项,以使web服务器无法告知浏览器是手动启动的或使用Selenium编程启动的? 谢谢,

    • 问题内容: 尝试使用python在chromedriver中启用Adobe Flash Player。我经历了许多尝试,包括: 以及我从Google顶级搜索结果中发现的有关此问题的其他几种变体。 问题答案: 最终使用以下代码解决了这个问题:

    • 问题内容: 我想尝试无头镀铬,但是遇到了这个问题,我无法以无头模式启动驱动程序。我正在关注google文档。我错过了什么吗?该代码执行陷在线路 这是我的代码: 问题答案: UPDATE Chrome版本60已经发布,因此您所需要做的就是通过Nuget下载Chromdriver和Selenium并使用此简单代码,一切都像个魅力。惊人。 日期 在正式发布Chrome 60之前,有一个解决方案。您可以下

    • 问题内容: 我需要使用Selenium测试JS地理定位功能,并且正在使用chromedriver在最新的Chrome上运行测试。 现在的问题是,Chrome浏览器提示我在测试过程中启用Geolocation,而且我不知道如何在运行时单击该小条,因此我急切地寻找一种方法来通过某些选项或触发器启动chromedriver和chrome默认情况下启用此功能。我在这里只能找到如何完全禁用地理位置。 我该如

    • 问题内容: 我无法开始用。 它永远不会 失败,但会失败: 我正在使用( virtualenv installation)和(64b)。 编辑 降级为: 但是,可悲的是,结果仍然相同。 知道为什么会这样吗? 问题答案: 好的,所以解决方案 有点奇怪 。 我将二进制文件从(已安装的位置)移动到,更新了符号链接,它现在可以正常工作! 与问题本身相比,以下两行代码可以解决问题: 现在,我可以运行以下Pyt

    • 问题内容: 我开始使用seleniumselenium(selenium包装API),必须说它是一个很棒的工具,但是我唯一的问题是它缺少在线文档或用法示例。 任何想法如何在google- Chrome中运行以selenide编码的应用程序。我正在使用eclipse作为IDE。我在运行配置中添加了带有值chrome的环境变量“浏览器”,但是在运行时,它将使用Firefox。 我的堆栈是JDBC Ja