如何在JAR中包含ChromeDriver?

Dan*_*han 8 java eclipse selenium google-chrome 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中?

谢谢,丹尼尔

小智 5

您必须先提取它,然后再运行它。在src / resources / drivers / chromedriver.exe下复制您的驱动程序

现在,无论何时运行此代码,它都将在您放置Runnable jar并复制驱动程序的位置创建一个新的文件夹“ Driver”。

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();
Run Code Online (Sandbox Code Playgroud)


Itt*_*iel 1

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

  • 请参阅此处的示例:http://stackoverflow.com/questions/12531766/run-exe-file-from-inside-jar (3认同)