如何在JAR中包含ChromeDriver?

时间:2014-02-08 18:37:20

标签: java eclipse google-chrome selenium jar

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

谢谢, 丹尼尔

3 个答案:

答案 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"); 

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