У меня есть файл .properties, в котором содержатся входные данные для создания экземпляра WebDriver внутри класса ServiceHooks.Как я могу изменить эту логику, чтобы использовать файл .feature огурца для передачи параметров, которые я предоставляю WebDriver, и реализации такого сценария?
Feature: Login page navigation
Scenario Outline: User navigates to url
Given I open the browser <browser> on operatingSystem <platform>
When I navigate to url <url>
Then I see the login page
Examples:
|browser|platform| url |
|"firefox"|"windows"|"https://loginpage.com"|
|"chrome"| "windows" |"https://loginpage.com"|
У меня есть некоторый код, который оценивает, является ли драйвер удаленным илинет и создает драйвер (таким образом, уже открывает браузер) до того, как будет выполнен сценарий тестирования.
public class ServiceHooks {
public static WebDriver driver;
public void getDriverInstance() {
//if isRemoteDriver evaluests to true or false base on a .properties file
if (isRemoteDriver.equals("yes")){
driver = getRemoteDriverInstance(platform, browser, url);
} else {
driver = getLocalDriverInstance(platform, browser, url);
}
//platform, browser, url are served from the .properties file as well
public WebDriver getLocalDriverInstance(String platform, String browser, String url)
throws MalformedURLException {
WebDriver localDriver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
//ChromeOptions options = new ChromeOptions();
// Platforms
if (platform.equalsIgnoreCase("Windows")) {
capabilities.setPlatform(Platform.WINDOWS);
}
if (platform.equalsIgnoreCase("MAC")) {
capabilities.setPlatform(Platform.MAC);
}
// Browsers
if (browser.equalsIgnoreCase("chrome")) {
capabilities = DesiredCapabilities.chrome();
localDriver = new ChromeDriver();
}
if (browser.equalsIgnoreCase("firefox")) {
capabilities = DesiredCapabilities.firefox();
localDriver = new FirefoxDriver();
}
if (browser.equalsIgnoreCase("ie")) {
capabilities = DesiredCapabilities.internetExplorer();
localDriver = new InternetExplorerDriver();
}
localDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
localDriver.manage().window().maximize();
localDriver.get(url);
return localDriver;
}
public static WebDriver getRemoteDriverInstance(String platform, String browser, String url)
throws MalformedURLException {
String nodeURL = "http://localhost:4444/wd/hub";
WebDriver remoteDriver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
// Platforms
if (platform.equalsIgnoreCase("Windows")) {
capabilities.setPlatform(Platform.WINDOWS);
}
if (platform.equalsIgnoreCase("MAC")) {
capabilities.setPlatform(Platform.MAC);
}
// Browsers
if (browser.equalsIgnoreCase("chrome")) {
capabilities = DesiredCapabilities.chrome();
}
if (browser.equalsIgnoreCase("firefox")) {
capabilities = DesiredCapabilities.firefox();
}
if (browser.equalsIgnoreCase("ie")) {
capabilities = DesiredCapabilities.internetExplorer();
}
// Open the Application
remoteDriver = new RemoteWebDriver(new URL(nodeURL), capabilities);
remoteDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
remoteDriver.manage().window().maximize();
remoteDriver.get(url);
return remoteDriver;
}
}
Я хочу иметь возможность запускать упомянутый сценарий тестирования огурца локально, используя WebDriver, а также удаленно с Selenium Grid..