У вас есть несколько вариантов:
Установите соответствующие переменные среды
Не используйте System.setProperty
для установки webdriver.gecko.driver
. Это должно быть установлено как переменная окружения на машине, а не в коде. Это позволяет вам настроить несколько машин / блоков сборки с драйвером gecko в нескольких местах. Каждой машине нужно просто установить переменную окружения webdriver.gecko.driver
, чтобы указать на соответствующий путь на локальной машине, и она "просто будет работать".
Использование драйвера двоичного загрузчика maven plugin
Это позволит вашему проекту Maven автоматически загружать двоичные файлы драйверов, как указано в соответствующем RepositoryMap.xml
(очевидно, вам необходимо использовать Maven для управления сборкой / зависимостями). Если вы не определили один, он загрузит набор двоичных файлов по умолчанию (но они могут быть устаревшими). Подробнее Смотрите здесь .
<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>
Полный рабочий пример см. Здесь .
Использование Webdriver Manager
Это позволит вам загружать и настраивать двоичные файлы драйверов с использованием кода 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
}
}
Для получения дополнительной информации См. Здесь .