如何在JAR中加入ChromeDriver?

我正在编写一个网络自动化程序,到目前为止,它使用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中?

谢谢,丹尼尔

它在Jar中但无法执行(与尝试从zip文件运行.exe相同),您必须在运行它之前将其解压缩

你必须在运行它之前提取它。 在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(); 

将代码导出为jar而不使用chromedriver。 创建一个ChromeDriver文件夹。 将chromedriver.exe放在此文件夹中。 将ChromeDriver文件夹与您的jar放在一起。

也不要忘记在代码中设置System属性

 System.setProperty("webdriver.chrome.driver", "ChromeDriver/chromedriver.exe"); 

如果这对你有用,请告诉我。