Создание Системы.методов-setproperty независимым от платформы в Maven-проекта для тестов Selenium
В настоящее время я создаю selenium automation с помощью webdriver в Maven с использованием Java. Теперь для инициализации браузеров, таких как Chrome и IE, я должен установить системное свойство, такое как
System.setProperty("webdriver.chrome.driver", "F:\somewhereintheworkingdir\driverschromedriver.exe");
Теперь, мой результат в терминах JAR. Я использую maven, поэтому в настоящее время это находится в разделе main>resources>drivers>chromedriver.exe
Так что после пакета это будет unders root > drivers>chromedriver.exe
Итак, как сделать системное свойство, чтобы оно выполнялось в обоих дела?
Я исследовал некоторые константы, такие какjava.class.path
или java.file.seperator
и т. д. но я не уверен, насколько они пригодятся здесь в данном случае.
Я надеюсь, что кто-нибудь сможет мне помочь.1 ответ:
Я бы предложил взглянуть на это:
Https://github.com/Ardesco/Selenium-Maven-Template
Соответствующие части являются POM, где он использует этот плагин:
<properties> <standalone.binary.root.folder>${project.basedir}/selenium_standalone_binaries</standalone.binary.root.folder> </properties> <profiles> <profile> <id>selenium-tests</id> <build> <plugins> <plugin> <groupId>com.lazerycode.selenium</groupId> <artifactId>driver-binary-downloader-maven-plugin</artifactId> <version>0.9.2</version> <configuration> <rootStandaloneServerDirectory>${standalone.binary.root.folder}</rootStandaloneServerDirectory> <downloadedZipFileDirectory>${project.basedir}/selenium_standalone_zips</downloadedZipFileDirectory> <customRepositoryMap>${project.basedir}/RepositoryMap.xml</customRepositoryMap> </configuration> <executions> <execution> <goals> <goal>selenium</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
И в базовом классе, где он вытягивает расположение двоичных файлов:
private static ResourceBundle _prop = ResourceBundle.getBundle("dev"); //Load standalone executable if required switch (browserType) { case CHROME: if (System.getProperties().getProperty("os.arch").toLowerCase().equals("x86_64") || System.getProperties().getProperty("os.arch").toLowerCase().equals("amd64")) { if (System.getProperties().getProperty("os.name").toLowerCase().contains("windows")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/windows/googlechrome/64bit/26/chromedriver.exe"); } else if (System.getProperties().getProperty("os.name").toLowerCase().contains("mac")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/osx/googlechrome/64bit/26/chromedriver"); } else if (System.getProperties().getProperty("os.name").toLowerCase().contains("linux")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/linux/googlechrome/64bit/26/chromedriver"); } } else { if (System.getProperties().getProperty("os.name").toLowerCase().contains("windows")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/windows/googlechrome/32bit/26/chromedriver.exe"); } else if (System.getProperties().getProperty("os.name").toLowerCase().contains("mac")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/osx/googlechrome/32bit/26/chromedriver"); } else if (System.getProperties().getProperty("os.name").toLowerCase().contains("linux")) { System.setProperty("webdriver.chrome.driver", _prop.getString("binaryRootFolder") + "/linux/googlechrome/32bit/26/chromedriver"); } } break; case IE: if (System.getProperties().getProperty("os.arch").toLowerCase().equals("x86_64") || System.getProperties().getProperty("os.arch").toLowerCase().equals("amd64")) { System.setProperty("webdriver.ie.driver", _prop.getString("binaryRootFolder") + "/windows/internetexplorer/64bit/2.29.0/IEDriverServer.exe"); } else { System.setProperty("webdriver.ie.driver", _prop.getString("binaryRootFolder") + "/windows/internetexplorer/32bit/2.29.0/IEDriverServer.exe"); } break; }
Вам также нужно иметь файл свойств в src / main / resources (должен быть в main, а не в test), который maven может обновить во время сборки, чтобы передать свойства, заданные в POM / overridden по команде линия.
Этот файл будет выглядеть так:
binaryRootFolder=${standalone.binary.root.folder}
Проще всего было бы клонировать проект, связанный с этим ответом, и просто запустить:
Это покажет вам все, что работает, и даст вам хорошую базу для начала.mvn verify -Pselenium-tests