add browser platform validation for safari and edge
This commit is contained in:
parent
a6d643bb29
commit
62959be1c3
@ -9,9 +9,12 @@ import org.openqa.selenium.firefox.FirefoxDriver;
|
|||||||
import org.openqa.selenium.firefox.FirefoxOptions;
|
import org.openqa.selenium.firefox.FirefoxOptions;
|
||||||
import org.openqa.selenium.remote.CapabilityType;
|
import org.openqa.selenium.remote.CapabilityType;
|
||||||
import org.openqa.selenium.remote.RemoteWebDriver;
|
import org.openqa.selenium.remote.RemoteWebDriver;
|
||||||
|
import org.openqa.selenium.remote.UnreachableBrowserException;
|
||||||
import org.openqa.selenium.safari.SafariDriver;
|
import org.openqa.selenium.safari.SafariDriver;
|
||||||
import org.openqa.selenium.safari.SafariOptions;
|
import org.openqa.selenium.safari.SafariOptions;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public class BrowserDriver extends RemoteWebDriver {
|
public class BrowserDriver extends RemoteWebDriver {
|
||||||
@ -41,6 +44,7 @@ public class BrowserDriver extends RemoteWebDriver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private RemoteWebDriver getChrome(final Boolean headless){
|
private RemoteWebDriver getChrome(final Boolean headless){
|
||||||
|
validateBrowser();
|
||||||
WebDriverManager.chromedriver().setup();
|
WebDriverManager.chromedriver().setup();
|
||||||
ChromeOptions options = new ChromeOptions();
|
ChromeOptions options = new ChromeOptions();
|
||||||
options.setHeadless(true);
|
options.setHeadless(true);
|
||||||
@ -49,6 +53,7 @@ public class BrowserDriver extends RemoteWebDriver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private RemoteWebDriver getFirefox(final Boolean headless){
|
private RemoteWebDriver getFirefox(final Boolean headless){
|
||||||
|
validateBrowser();
|
||||||
WebDriverManager.firefoxdriver().setup();
|
WebDriverManager.firefoxdriver().setup();
|
||||||
FirefoxOptions options = new FirefoxOptions();
|
FirefoxOptions options = new FirefoxOptions();
|
||||||
options.setHeadless(true);
|
options.setHeadless(true);
|
||||||
@ -57,6 +62,7 @@ public class BrowserDriver extends RemoteWebDriver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private RemoteWebDriver getEdge(final Boolean headless){
|
private RemoteWebDriver getEdge(final Boolean headless){
|
||||||
|
validateBrowser();
|
||||||
WebDriverManager.edgedriver().setup();
|
WebDriverManager.edgedriver().setup();
|
||||||
EdgeOptions options = new EdgeOptions();
|
EdgeOptions options = new EdgeOptions();
|
||||||
//if (headless.equals(true)){ // necessary for Selenium 3
|
//if (headless.equals(true)){ // necessary for Selenium 3
|
||||||
@ -72,6 +78,7 @@ public class BrowserDriver extends RemoteWebDriver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private SafariDriver getSafari(final Boolean headless){
|
private SafariDriver getSafari(final Boolean headless){
|
||||||
|
validateBrowser();
|
||||||
if (headless.equals(true)){
|
if (headless.equals(true)){
|
||||||
throw new UnsupportedOperationException("Safari does not support headless execution yet");
|
throw new UnsupportedOperationException("Safari does not support headless execution yet");
|
||||||
}
|
}
|
||||||
@ -79,4 +86,15 @@ public class BrowserDriver extends RemoteWebDriver {
|
|||||||
options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
|
options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
|
||||||
return new SafariDriver(options);
|
return new SafariDriver(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateBrowser() {
|
||||||
|
String osName = System.getProperty("os.name");
|
||||||
|
if (browser.contentEquals("safari") && !osName.contentEquals("Mac OS X")){
|
||||||
|
throw new UnreachableBrowserException("Safari browser not available on this platform");
|
||||||
|
}
|
||||||
|
List<String> osNames = Arrays.asList("Windows 10", "Mac OS X");
|
||||||
|
if (browser.contentEquals("edge") && !osNames.contains(osName)){
|
||||||
|
throw new UnreachableBrowserException("Edge browser not available on this platform");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,8 @@ import io.cucumber.java.en.Then;
|
|||||||
import io.cucumber.java.en.When;
|
import io.cucumber.java.en.When;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.openqa.selenium.remote.RemoteWebDriver;
|
import org.openqa.selenium.remote.RemoteWebDriver;
|
||||||
import org.openqa.selenium.remote.UnreachableBrowserException;
|
|
||||||
import tools.BrowserDriver;
|
import tools.BrowserDriver;
|
||||||
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
public class Stepdefs {
|
public class Stepdefs {
|
||||||
@ -31,14 +29,8 @@ public class Stepdefs {
|
|||||||
|
|
||||||
@Given("I have a driver for {string}")
|
@Given("I have a driver for {string}")
|
||||||
public void i_have_a_driver_for(String browser) {
|
public void i_have_a_driver_for(String browser) {
|
||||||
Boolean headless = true;
|
boolean headless = true;
|
||||||
if (browser.contains("safari")){
|
if (browser.contains("safari")) headless = false;
|
||||||
System.out.println(System.getProperty("os.name"));
|
|
||||||
if (!System.getProperty("os.name").contains("Mac OS X")){
|
|
||||||
throw new UnreachableBrowserException("Safari browser not available on this platform");
|
|
||||||
}
|
|
||||||
headless = false;
|
|
||||||
}
|
|
||||||
driver = new BrowserDriver(browser, headless).getDriver();
|
driver = new BrowserDriver(browser, headless).getDriver();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,9 +47,5 @@ public class Stepdefs {
|
|||||||
Assertions.assertEquals("QA Testing as a Service | test IO", driver.getTitle());
|
Assertions.assertEquals("QA Testing as a Service | test IO", driver.getTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOperatingSystem() {
|
|
||||||
String os = System.getProperty("os.name");
|
|
||||||
return os;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user