Я пытаюсь запустить скрипт Selenium с возможностью его запуска с использованием chrome или безголового драйвера. Возможно, это неправильный способ реализации этого, но это была моя первая идея. Решение может состоять в том, чтобы полностью этого избежать ...
В методе настройки я использую параметры TestNG, чтобы определить, в какой среде я хочу выполнить тест, а также какой драйвер я хочу использовать. Тег @Optional используется для определения значения по умолчанию, если оно не указано.
public class Test1 {
@Parameters({"envDomain","driverName"})
@BeforeTest
public void setUp(@Optional("alpha1")String envDomain, @Optional("chrome")String driverName) {
PropertiesCollection.selectDriver(driverName);
PropertiesCollection.env_domain = envDomain;
}
Метод PropertiesCollection.selectDriver () принимает строковое имя, чтобы решить, на что установить драйвер.
public class PropertiesCollection {
public static WebDriver driver;
public static WebDriverWait wait;
public static String env_domain;
public static void selectDriver(String driverName) {
if (driverName == "chrome") {
String projectPath = System.getProperty("user.dir");
System.setProperty("webdriver.chrome.driver", projectPath + "\\configs\\WebDrivers\\chromedriver_win32\\chromedriver.exe");
PropertiesCollection.driver = new ChromeDriver();
}
if (driverName == "headless") {
PropertiesCollection.driver = new HtmlUnitDriver();
}
}
Не удается установить драйвер в первом операторе if. Когда я вручную ввожу строку "chrome", она, кажется, работает как положено. Я не уверен, почему он не работает при использовании «chrome» от TestNG. Когда я запускаю его через отладчик, создается впечатление, что driverName установлено в «chrome», но оператор if все еще пропускается.
Пример, который работает:
public class Test1 {
@Parameters({"envDomain"})
@BeforeTest
public void setUp(@Optional("alpha1")String envDomain) {
PropertiesCollection.selectDriver("chrome");
PropertiesCollection.env_domain = envDomain;
}
Тег envDomain также работает, как и ожидалось, поэтому я не уверен, почему параметр driverName будет работать по-другому.