如何才能将ChromeDriver路径硬编码?

时间:2015-09-22 17:49:54

标签: java selenium-webdriver

在我的硒测试中,我有了使用

进行硬编码的ChromeDriver路径
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\kday\\Desktop\\Selenium Stuff\\chromedriver.exe");
        WebDriver driver = new ChromeDriver(); 

但是,这意味着当我将程序导出为可运行的jar文件时,测试将无法工作,因为它无法找到硬编码路径(如果它在另一台计算机上)。有没有办法让它成为......

a。) - ChromeDriver是jar的一部分并随之运行 b。) - 我可以在代码中对其进行初始化,而无需像

那样硬编码值

大多数情况下,我想通过运行jar来运行所有测试(在IE,Chrome,FF中)。

6 个答案:

答案 0 :(得分:2)

解决方案是在你的jar中包含.exe(不要忘记将它包含在你的构建路径中)。然后,在您的应用程序中,您将使用NS_RETURNS_RETAINED NSString *ToNS(CFStringRef cfs) { return (__bridge NSString*)cfs; } 从jar中读取.exe的内容。

然后在临时目录中创建exe文件的副本。 See Apache commons IO。使用getResourceAsStream("path_to_your_exe_file")

然后,您可以使用旧的FileUtils.copy(in, out)

来引用您的exe文件

答案 1 :(得分:1)

唯一的方法是在jar中携带文件。您需要将chromedriver.exe复制到项目的main / resources文件夹中,并使用类加载器引用它。 ClassLoader.getResource()

如果这样做,请确保您的资源文件夹包含在构建路径中。 要在Eclipse中执行此操作,请右键单击项目 - >属性 - > Java构建路径

URL url = classLoader.getResource("chromedriver.exe");
System.setProperty("webdriver.chrome.driver", url.toString());

如果驱动程序位于jar中,我不确定url.toString()将返回什么。你需要尝试一下,亲眼看看。

答案 2 :(得分:1)

您可以在项目下添加Chrome驱动程序文件夹,然后使用

System.getProperty("user.dir");

返回项目路径,然后使用相对路径查找驱动程序。

答案 3 :(得分:1)

更好的是,您可以将驱动程序导入为Jar而不是.exe

罐子在这里。
http://www.java2s.com/Code/Jar/s/Downloadseleniumchromedriver20a4jar.htm

答案 4 :(得分:0)

您可以使用webdrivermanager maven依赖关系来下载和管理Selenium的二进制Web驱动程序:

  

如果使用Selenium WebDriver,您将知道要使用某些浏览器(例如Chrome,Firefox,Opera,PhantomJS,Microsoft Edge或Internet Explorer),首先需要下载一个二进制文件,该文件允许WebDriver处理浏览器。在Java中,必须将此二进制文件的绝对路径设置为JVM属性,如下所示:

     

System.setProperty(“ webdriver.chrome.driver”,“ / absolute / path / to / binary / chromedriver”);   System.setProperty(“ webdriver.gecko.driver”,“ / absolute / path / to / binary / geckodriver”);   System.setProperty(“ webdriver.opera.driver”,“ / absolute / path / to / binary / operadriver”);   System.setProperty(“ phantomjs.binary.path”,“ / absolute / path / to / binary / phantomjs”);   System.setProperty(“ webdriver.edge.driver”,“ C:/absolute/path/to/binary/MicrosoftWebDriver.exe”);   System.setProperty(“ webdriver.ie.driver”,“ C:/absolute/path/to/binary/IEDriverServer.exe”);

     

这很烦人,因为它迫使您直接将此二进制文件链接到源代码中。另外,您必须手动检查何时发布了新版本的二进制文件。 WebDriverManager可以为您提供帮助,以自动化方式为您完成所有这些肮脏的工作。

这是您需要添加到pom.xml文件中的Maven依赖项:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

答案 5 :(得分:0)

chromedriver.exe复制到资源文件夹并使用

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