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

ChromeDriver将不运行(Selenium Webdriver)

井唯
2023-03-14

我写了这样的代码,但是这段代码没有运行chromedriver,我已经添加了文件(chromedriver.exe)和这个路径(\chromedrive\chromedriver.exe)。

public class Browser {
    private static WebDriver driver = new ChromeDriver();

    public static WebDriver driver() {
        return driver;
    }

    public static void open(String url) {
        String path = System.getProperty("user.dir");
        System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
        driver.manage().window().maximize();
        driver.get(url);
    }
}

.

public class Page extends LoadableComponent<Page> {

    static String url = "http://-------";

    private static String title = "title";

    public Page() {
        PageFactory.initElements(Browser.driver(), this);
    }

    @Override
    protected void load() {
        // TODO Auto-generated method stub
        Browser.open(url);
    }

    @Override
    protected void isLoaded() throws Error {
        // TODO Auto-generated method stub
        assertTrue(Browser.driver().getTitle().equals(title));
    }
}

.

public class PageTests {
    @Test
    public void pageTest() {
        Page page = new Page();
        page.get();
    }
}

错误消息是:

JAVAlang.Exception初始化错误

原因:java。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。铬。驱动系统属性;

共有3个答案

令狐新翰
2023-03-14

您应该在定义和设置路径的函数中实例化浏览器。

试试这个:

  public static void open(String url) {
    String path = System.getProperty("user.dir");
    System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
    driver.manage().window().maximize();
     WebDriver driver = new ChromeDriver();
    driver.get(url);
}

不需要单独创建驱动程序函数。请把它拿走。

何海
2023-03-14

当应用程序第一次加载时,它将尝试加载Browser类。

在加载类时,JVM将执行所有指定的静态初始化,在本例中,它将尝试创建一个ChromeDriver对象,因为您正在使用new ChromeDriver()初始化静态字段。此时,尚未调用open方法来设置系统属性,因此将引发异常,从而导致JVM退出。

要解决此问题,请创建ChromeDriver对象/after/设置系统属性(例如在open方法中),或在启动JVM时设置系统属性:

java -Dwebdriver.chrome.driver=path/to/driver -jar somejar.jar
空慈
2023-03-14

起初,我认为您正在创建Chromedriver,而没有对exe的引用。

所以,如果你把它变成这样,它可能会工作。

public class Browser {
    private static WebDriver driver;

    public static WebDriver driver() {
        return driver;
    }

    public static void open(String url) {
        String path = System.getProperty("user.dir");
        System.setProperty("webdriver.chrome.driver",path + "\\chromedrive\\chromedriver.exe");
        driver = new ChromeDriver(); //Initilize here
        driver.manage().window().maximize();
        driver.get(url);
    }
}
 类似资料:
  • 系统环境: JVM 11.0.6-打开 Ubuntu 18.04 SDKMAN 5.8.1+484 等级6.1 Chrome版本81.0.4044.138 Chrome驱动程序3.141.59 要运行的代码: 下午4:52:09:正在执行任务“Runner.Main()”... 任务:CompileJava任务:ProcessResources无源任务:类 任务:runner.main()错误:未

  • 我一直在尝试通过Launchctl安排我的一个python脚本,但遇到了一个错误。目的是它在每个小时的给定时间运行。 我已经创建了plist,并将其加载到Launchctl中,但它无法正常工作。在做了一些挖掘后,我调试并得到以下错误消息:Traceback(最近一次调用最后一次):文件/Library/框架/Python.framework/Versions/3.8/lib/python3.8/s

  • 在我开始之前:我知道有10亿篇关于硒不起作用的帖子,还有各种各样的解决方案需要尝试。我相信我什么都试过了,但如果我错过了什么,请原谅。我的头撞到墙上了,非常感谢你的帮助。 以下是我采取的一些措施: 我下载了chromedriver for selenium(Ubuntu,Python),并使用和使驱动程序可执行。之后,我用。 我尝试了各种Selenium选项,包括手动添加chromedriver运

  • 问题内容: 我正在使用量角器针对Angular应用程序运行测试。它们可以在我的OSX环境上工作,但不能在TeamCity试图运行它的Linux上工作。 当我在本地OSX环境上运行此命令时,它可以工作(也在我的同事计算机上进行了测试): 当我在Linux机器上运行此程序时,或者TeamCity作业尝试运行它时,它失败了: 尝试解决: 我已经看过这个问题,但是独立的webdriver服务器无法解决。

  • 问题内容: 我将Selenium与Java(1.8)中的Chromedriver结合使用来进行一些自动的网络爬网: 我正在尝试迁移到Ubuntu 16.04服务器。在服务器上,我安装了Ubuntu chromedriver版本2.37,chrome版本65。根据chromedriver文档,这些版本兼容。我已经更改了指定chromedriver在Ubuntu中的位置的代码: 在运行程序之前,我先启

  • 我正在尝试使用python 3从WSL2(Ubuntu18.04)中无头打开Chrome。 在Windows上,我使用的是Chrome84。我已经从ChromeDriver-WebDriver下载了Chrome Driver 84。并在C:\chromedriver\chromedriver.exe下安装了。exe 以下是我的剧本: 它失败并出现错误: 引发WebDriverException(“