我正在编写一个网络自动化程序,到目前为止,它使用Selenium的FirefoxDriver工作正常。但是,如果未安装Firefox,我想使用Chrome。我下载了ChromeDriver,将它放在Eclipse项目的一个文件夹中,然后运行它。我添加System.setProperty("webdriver.chrome.driver", "Drivers/chromedriver.exe");
后,它运行正常。但是,当我尝试导出它时(使用Eclipse的标准导出)。它崩溃了,我相信因为它找不到ChromeDriver(我认为这是因为用FirefoxDriver导出它可以正常工作)。
我尝试将.JAR更改为.ZIP以便查看内部,我发现driver
文件夹已被删除,只需将chromedriver.exe
放入顶层JAR即可。我尝试将属性更改为System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
,但仍然崩溃。
有没有人知道为什么导出的JAR无法找到chromeDriver
,尽管我已经确认它在JAR中?
谢谢, 丹尼尔
答案 0 :(得分:4)
你必须在运行之前将其解压缩。 在src / resources / drivers / chromedriver.exe下复制您的驱动程序
现在每当你运行这段代码时,它都会创建一个新的文件夹“Driver”,你可以放置你的Runnable jar并复制你可以访问的驱动程序。
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("resources/drivers/chromedriver.exe");
File f = new File("Driver");
if (!f.exists()) {
f.mkdirs();
}
File chromeDriver = new File("Driver" + File.separator + "chromedriver.exe");
if (!chromeDriver.exists()) {
chromeDriver.createNewFile();
org.apache.commons.io.FileUtils.copyURLToFile(resource, chromeDriver);
}
System.setProperty("webdriver.chrome.driver", chromeDriver.getAbsolutePath());
driver = new ChromeDriver();
答案 1 :(得分:1)
它在Jar中但无法执行(与尝试从zip文件运行.exe相同),你必须在运行它之前将其解压缩
答案 2 :(得分:1)
将代码导出为jar而不使用chromedriver。 创建一个ChromeDriver文件夹。将chromedriver.exe放在此文件夹中。 将ChromeDriver文件夹与您的jar一起放置。
另外不要忘记将代码中的System属性设置为
System.setProperty("webdriver.chrome.driver", "ChromeDriver/chromedriver.exe");
如果这对你有用,请告诉我。