2014-02-08 64 views
3

我正在编写一个web自动化程序,到目前为止,它使用Selenium的FirefoxDriver工作正常。但是,如果Firefox未安装,我希望使用Chrome。我下载了ChromeDriver,把它放在Eclipse项目的一个文件夹中,然后运行它。在我加入System.setProperty("webdriver.chrome.driver", "Drivers/chromedriver.exe");后,它工作正常。但是,当我尝试导出它时(使用Eclipse的标准导出)。它崩溃,我相信因为它找不到ChromeDriver(我认为这是因为用FirefoxDriver导出它工作正常)。如何将ChromeDriver包含在JAR中?

我试图将.JAR更改为.ZIP以查看内部,并且我看到driver文件夹已被剥离,只需将chromedriver.exe放入顶层JAR中即可。我试图将该属性更改为System.setProperty("webdriver.chrome.driver", "chromedriver.exe");,但仍然崩溃。

有谁知道为什么导出的JAR无法找到chromeDriver,尽管事实证明我已经证实它在JAR中?

感谢, 丹尼尔

+0

这似乎有点愚蠢的问,但你有“Chromedriver.exe”,但它被列为小写“chromedriver.exe”。你有没有尝试将它改为小写字母呢? –

+0

简单的错字,现在修复。 (在我的实际代码中,它到处都是小写) – DaniChan

+0

只是要清楚,这并不能解决您的实际问题吗? –

回答

0

它在罐,但不能执行(同试图运行从一个zip文件中的.exe),您可以运行它

+0

好的,我该怎么做呢? – DaniChan

+0

请看这里的例子:http://stackoverflow.com/questions/12531766/run-exe-file-from-inside-jar – Ittiel

+0

谢谢!这工作!我有一个小问题,为了找到“chromedriver”的位置,但是当我把它放在src文件夹中时,这个问题就解决了。 再次,谢谢! – DaniChan

1

导出代码之前将其解压作为罐子没有chromedriver。 创建一个文件夹ChromeDriver。将您的chromedriver.exe放在这个文件夹中。 将ChromeDriver文件夹与您的jar放在一起。

而且不要忘记在代码的系统属性设置为

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

请让我知道这对你的作品。

+0

尽管我没有看到为什么这种方式无效,但我真的希望能够让用户只需下载一种类型的文件。这种方法应该可以工作,尽管'jar'不再是自给自足的。 – DaniChan

2

你必须在运行之前解压缩它。 复制在src /资源/司机/ chromedriver.exe您的驾驶

现在只要您运行此代码,它会创建一个新的文件夹“驱动程序”在任何你把你运行的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();