我正在使用Java 1.8和Selenium 2.53.0。我接受了这些,并使用maven创建了一个lib / jar来处理驱动程序实例化。在该库中,我还将ChromeDriver.exe打包在资产文件夹中。
在我的另一个项目中,我将该lib称为依赖项,并且我从lib内部使用了AutomationDriver对象。在lib中,它将使用我已经指定的设置自动实例化我需要的任何驱动程序。但是,这是ChromeDriver.exe的特例,因为它需要具有
System.setProperty("webdriver.chrome.driver", "./path/to/chromedriver");
设置为引用路径。之前我在项目中使用相对路径,但它可以正常工作,但是现在我拥有它作为lib的权限,我似乎无法找出到达lib内资产的相对路径,以便它可以在每台机器上使用无需下载/路由到另一个ChromeDriver。
您可以使用库WebDriverManager,而不是手动处理chromedriver二进制文件。如果使用的是Maven,则可以按如下所示将其添加为依赖项:
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.7.1</version>
</dependency>
然后只需在您的代码中调用此行:
WebDriverManager.chromedriver().setup();
该库会自动为您下载正确的chromedriver二进制文件,设置为在Selenium WebDriver代码中使用。