在我的硒测试中,我有了使用
进行硬编码的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中)。
答案 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)
答案 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");