gpt4 book ai didi

java - 有没有办法让 gecko.driver 可供共享代码中的每个人使用?

转载 作者:行者123 更新时间:2023-12-02 03:54:27 26 4
gpt4 key购买 nike

我将通过 BitBucket 分享我在 Selenium/Cucumber 框架中编写的代码。我使用以下方法使代码在 Firefox 中可执行。

System.setProperty("webdriver.gecko.driver","/Users/firatkaymaz/eclipse-workspace/SeleniumTest/drivers/geckodriver/geckodriver");
driver = new FirefoxDriver();

如何在另一台 PC 或笔记本电脑上运行代码,因为 Gecko 驱动程序路径信息与我的本地计算机相关?有没有办法让 gecko.driver 对于要在共享代码中运行的人可用,或者他们必须用自己的路径信息更改路径信息?

最佳答案

您有多种选择:

设置适当的环境变量

不要使用System.setProperty来设置webdriver.gecko.driver。这应该设置为机器上的环境变量,而不是代码中。这允许您在多个位置使用 gecko 驱动程序配置多台开发机器/构建盒。每台机器只需要设置环境变量webdriver.gecko.driver以指向本地机器上的相关路径,它就会“正常工作”。

使用驱动程序二进制下载器maven插件

这将允许您的 Maven 项目自动下载关联的 RepositoryMap.xml 中指定的驱动程序二进制文件(显然需要您使用 Maven 进行构建/依赖管理)。如果您尚未定义,它将下载一组默认的二进制文件(但它们很可能已经过时)。了解更多详情See Here .

<plugins>
<plugin>
<groupId>com.lazerycode.selenium</groupId>
<artifactId>driver-binary-downloader-maven-plugin</artifactId>
<version>1.0.17</version>
<configuration>
<!-- root directory that downloaded driver binaries will be stored in -->
<rootStandaloneServerDirectory>/my/location/binaries</rootStandaloneServerDirectory>
<!-- Where you want to store downloaded zip files -->
<downloadedZipFileDirectory>/my/location/zips</downloadedZipFileDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>selenium</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

不幸的是,虽然这确实下载了二进制文件,但 Maven 不会在不同的 JVM 之间传递环境变量,它会在不同的阶段启动。因此,您需要将一些配置传递到测试配置中,例如:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<systemPropertyVariables>
<!--Set properties passed in by the driver binary downloader-->
<webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>
<webdriver.ie.driver>${webdriver.ie.driver}</webdriver.ie.driver>
<webdriver.opera.driver>${webdriver.opera.driver}</webdriver.opera.driver>
<webdriver.gecko.driver>${webdriver.gecko.driver}</webdriver.gecko.driver>
<webdriver.edge.driver>${webdriver.edge.driver}</webdriver.edge.driver>
</systemPropertyVariables>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<!--This goal makes the build fail if you have test failures-->
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>

See Here完整的工作示例。

使用 Webdriver 管理器

这将允许您使用 Java 代码下载和配置驱动程序二进制文件。您可以使用 versions.properties 文件指定特定版本:

public class ChromeTest {

private WebDriver driver;

@BeforeClass
public static void setupClass() {
WebDriverManager.chromedriver().setup();
}

@Before
public void setupTest() {
driver = new ChromeDriver();
}

@After
public void teardown() {
if (driver != null) {
driver.quit();
}
}

@Test
public void test() {
// Your test code here
}

}

了解更多信息See Here .

关于java - 有没有办法让 gecko.driver 可供共享代码中的每个人使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com