From cf9695a6e4a5e860db0504f5b86c6d1095334622 Mon Sep 17 00:00:00 2001 From: dkostichev Date: Tue, 5 Jun 2018 18:06:08 +0300 Subject: [PATCH 1/8] settes latest version of browser by default --- .../alfabank/tests/core/drivers/CustomDriverProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index a3810f4d..13989ed1 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -159,7 +159,7 @@ private DesiredCapabilities getChromeDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities = getCapabilitiesWithCustomFileDownloadFolder(capabilities); capabilities.setBrowserName(CHROME); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "60.0")); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); return capabilities; } @@ -172,7 +172,7 @@ private DesiredCapabilities getFirefoxDriverCapabilities() { log.info("---------------Firefox Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setBrowserName(FIREFOX); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "57.0")); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); return capabilities; } @@ -185,7 +185,7 @@ private DesiredCapabilities getOperaDriverCapabilities() { log.info("---------------Opera Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); capabilities.setBrowserName(OPERA); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "46.0")); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); return capabilities; } From 54fe10422abf7fcf46583b793c5d476316951482 Mon Sep 17 00:00:00 2001 From: dkostichev Date: Sat, 9 Jun 2018 15:42:37 +0300 Subject: [PATCH 2/8] added possibility to define resolution by params in property --- .../tests/core/drivers/CustomDriverProvider.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index 13989ed1..00683e9e 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -63,6 +63,8 @@ public class CustomDriverProvider implements WebDriverProvider { public final static String REMOTE_URL = "remoteUrl"; public final static String WINDOW_WIDTH = "width"; public final static String WINDOW_HEIGHT = "height"; + public final static String RESOLUTION = "resolution"; + private BrowserMobProxy proxy = new BrowserMobProxyServer(); @Override @@ -157,9 +159,10 @@ private ChromeOptions getMobileChromeOptions() { private DesiredCapabilities getChromeDriverCapabilities() { log.info("---------------Chrome Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); - capabilities = getCapabilitiesWithCustomFileDownloadFolder(capabilities); capabilities.setBrowserName(CHROME); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); + capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", + loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); return capabilities; } @@ -173,6 +176,8 @@ private DesiredCapabilities getFirefoxDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setBrowserName(FIREFOX); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); + capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", + loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); return capabilities; } @@ -186,6 +191,8 @@ private DesiredCapabilities getOperaDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); capabilities.setBrowserName(OPERA); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); + capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", + loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); return capabilities; } From 5055428fa539d0662df313d2aec8106e3a6c8a1c Mon Sep 17 00:00:00 2001 From: dkostichev Date: Mon, 2 Jul 2018 17:14:36 +0300 Subject: [PATCH 3/8] added default width and height --- .../core/drivers/CustomDriverProvider.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index 00683e9e..cf657443 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -64,6 +64,8 @@ public class CustomDriverProvider implements WebDriverProvider { public final static String WINDOW_WIDTH = "width"; public final static String WINDOW_HEIGHT = "height"; public final static String RESOLUTION = "resolution"; + public final static int DEFAULT_WIDTH = 1920; + public final static int DEFAULT_HEIGHT = 1080; private BrowserMobProxy proxy = new BrowserMobProxyServer(); @@ -87,10 +89,14 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { capabilities = getOperaDriverCapabilities(); return "local".equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } + ChromeOptions chromeOptions = new ChromeOptions(); + chromeOptions.addArguments("--window-size=1300,1000"); + DesiredCapabilities cap = DesiredCapabilities.chrome(); + cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions); log.info("remoteUrl=" + remoteUrl + " expectedBrowser= " + expectedBrowser + " BROWSER_VERSION=" + System.getProperty(BROWSER_VERSION)); capabilities = getChromeDriverCapabilities(); - return "local".equalsIgnoreCase(remoteUrl) ? new ChromeDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return "local".equalsIgnoreCase(remoteUrl) ? new ChromeDriver(chromeOptions) : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } /** @@ -102,8 +108,8 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { */ private WebDriver getRemoteDriver(DesiredCapabilities capabilities, String remoteUrl) { log.info("---------------run Selenoid Remote Driver---------------------"); - Integer browserWidth = loadSystemPropertyOrDefault(WINDOW_WIDTH, 1920); - Integer browserHeight = loadSystemPropertyOrDefault(WINDOW_HEIGHT, 1080); + Integer browserWidth = loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH); + Integer browserHeight = loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT); capabilities.setCapability("enableVNC", true); try { RemoteWebDriver driver = new RemoteWebDriver( @@ -161,8 +167,8 @@ private DesiredCapabilities getChromeDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setBrowserName(CHROME); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", - loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); + capabilities.setCapability(RESOLUTION, String.format("%sx%s", + loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); return capabilities; } @@ -176,8 +182,8 @@ private DesiredCapabilities getFirefoxDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setBrowserName(FIREFOX); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", - loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); + capabilities.setCapability(RESOLUTION, String.format("%sx%s", + loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); return capabilities; } @@ -191,8 +197,8 @@ private DesiredCapabilities getOperaDriverCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); capabilities.setBrowserName(OPERA); capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("[%s]x[%s]", - loadSystemPropertyOrDefault(WINDOW_WIDTH,1920), loadSystemPropertyOrDefault(WINDOW_HEIGHT,1080))); + capabilities.setCapability(RESOLUTION, String.format("%sx%s", + loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); return capabilities; } From 9bd0c1c96ef5854f593d87803731429eff38456a Mon Sep 17 00:00:00 2001 From: dkostichev Date: Thu, 5 Jul 2018 16:13:07 +0300 Subject: [PATCH 4/8] added default values, added possibility for add options --- .../core/drivers/CustomDriverProvider.java | 54 ++++++++++++------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index cf657443..6ed1f753 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -25,7 +25,9 @@ import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.opera.OperaDriver; +import org.openqa.selenium.opera.OperaOptions; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; @@ -49,7 +51,7 @@ * -Dbrowser=chrome -DbrowserVersion=63.0 -DremoteUrl=http://some/url -Dwidth=1000 -Dheight=500 * Если параметр remoteUrl не указан - тесты будут запущены локально в заданном браузере последней версии * Если указан параметр remoteUrl и browser, но версия браузера не указана, - * по умолчанию для chrome будет установлена версия 60.0 и для firefox версия 57.0 + * по умолчанию для chrome будет установлена версия latest и для firefox версия latest * Если браузер не указан - по умолчанию будет запущен chrome * По умолчанию размер окна браузера при remote запуске равен 1920x1080 * Предусмотрена возможность запуска в режиме мобильного браузера (-Dbrowser=mobile) @@ -63,7 +65,8 @@ public class CustomDriverProvider implements WebDriverProvider { public final static String REMOTE_URL = "remoteUrl"; public final static String WINDOW_WIDTH = "width"; public final static String WINDOW_HEIGHT = "height"; - public final static String RESOLUTION = "resolution"; + public final static String VERSION_LATEST = "latest"; + public final static String LOCAL = "local"; public final static int DEFAULT_WIDTH = 1920; public final static int DEFAULT_HEIGHT = 1080; @@ -72,31 +75,49 @@ public class CustomDriverProvider implements WebDriverProvider { @Override public WebDriver createDriver(DesiredCapabilities capabilities) { String expectedBrowser = loadSystemPropertyOrDefault(BROWSER, CHROME); - String remoteUrl = loadSystemPropertyOrDefault(REMOTE_URL, "local"); + String remoteUrl = loadSystemPropertyOrDefault(REMOTE_URL, LOCAL); + String[] options = loadSystemPropertyOrDefault("options", "").split(" "); BlackList blackList = new BlackList(); if (FIREFOX.equalsIgnoreCase(expectedBrowser)) { + FirefoxOptions firefoxOptions = new FirefoxOptions(); + if (!options[0].equals("")) firefoxOptions.addArguments(options); + FirefoxDriver firefoxDriver = new FirefoxDriver(firefoxOptions); + + firefoxDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), + loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); + capabilities = getFirefoxDriverCapabilities(); - return "local".equalsIgnoreCase(remoteUrl) ? new FirefoxDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? firefoxDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } if (MOBILE_DRIVER.equalsIgnoreCase(expectedBrowser)) { capabilities.setCapability(ChromeOptions.CAPABILITY, getMobileChromeOptions()); - return "local".equalsIgnoreCase(remoteUrl) ? new ChromeDriver(getMobileChromeOptions()) : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? new ChromeDriver(getMobileChromeOptions()) : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } if (OPERA.equalsIgnoreCase(expectedBrowser)) { + OperaOptions operaOptions = new OperaOptions(); + if (!options[0].equals("")) operaOptions.addArguments(options); + OperaDriver operaDriver = new OperaDriver(operaOptions); + + operaDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), + loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); + capabilities = getOperaDriverCapabilities(); - return "local".equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } + ChromeOptions chromeOptions = new ChromeOptions(); - chromeOptions.addArguments("--window-size=1300,1000"); - DesiredCapabilities cap = DesiredCapabilities.chrome(); - cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions); + if (!options[0].equals("")) chromeOptions.addArguments(options); + ChromeDriver chromeDriver = new ChromeDriver(chromeOptions); + + chromeDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), + loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); log.info("remoteUrl=" + remoteUrl + " expectedBrowser= " + expectedBrowser + " BROWSER_VERSION=" + System.getProperty(BROWSER_VERSION)); capabilities = getChromeDriverCapabilities(); - return "local".equalsIgnoreCase(remoteUrl) ? new ChromeDriver(chromeOptions) : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? chromeDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } /** @@ -153,7 +174,6 @@ private ChromeOptions getMobileChromeOptions() { Map mobileEmulation = new HashMap<>(); mobileEmulation.put("deviceName", mobileDeviceName); chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation); - return chromeOptions; } @@ -166,9 +186,7 @@ private DesiredCapabilities getChromeDriverCapabilities() { log.info("---------------Chrome Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setBrowserName(CHROME); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("%sx%s", - loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); return capabilities; } @@ -181,9 +199,7 @@ private DesiredCapabilities getFirefoxDriverCapabilities() { log.info("---------------Firefox Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setBrowserName(FIREFOX); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("%sx%s", - loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); return capabilities; } @@ -196,9 +212,7 @@ private DesiredCapabilities getOperaDriverCapabilities() { log.info("---------------Opera Driver---------------------"); DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); capabilities.setBrowserName(OPERA); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, "latest")); - capabilities.setCapability(RESOLUTION, String.format("%sx%s", - loadSystemPropertyOrDefault(WINDOW_WIDTH,DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT,DEFAULT_HEIGHT))); + capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); return capabilities; } From 06f3ceb51016a09a1fe39832fa8bb8f1540ee384 Mon Sep 17 00:00:00 2001 From: dkostichev Date: Thu, 5 Jul 2018 17:26:22 +0300 Subject: [PATCH 5/8] changed name var --- .../alfabank/tests/core/drivers/CustomDriverProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index 6ed1f753..93ef5854 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -108,9 +108,9 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { return LOCAL.equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } - ChromeOptions chromeOptions = new ChromeOptions(); - if (!options[0].equals("")) chromeOptions.addArguments(options); - ChromeDriver chromeDriver = new ChromeDriver(chromeOptions); + ChromeOptions chromeOpt = new ChromeOptions(); + if (!options[0].equals("")) chromeOpt.addArguments(options); + ChromeDriver chromeDriver = new ChromeDriver(chromeOpt); chromeDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); From 2e05b55c9586392fc3b480207f32e294c6b3c5e8 Mon Sep 17 00:00:00 2001 From: dkostichev Date: Mon, 9 Jul 2018 13:20:33 +0300 Subject: [PATCH 6/8] edited merge --- .../tests/core/drivers/CustomDriverProvider.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index b24836a4..6ed1f753 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -107,14 +107,10 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { capabilities = getOperaDriverCapabilities(); return LOCAL.equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } - ChromeOptions chromeOptions = new ChromeOptions(); - chromeOptions.addArguments("--window-size=1300,1000"); - DesiredCapabilities cap = DesiredCapabilities.chrome(); - cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions); - ChromeOptions chromeOpt = new ChromeOptions(); - if (!options[0].equals("")) chromeOpt.addArguments(options); - ChromeDriver chromeDriver = new ChromeDriver(chromeOpt); + ChromeOptions chromeOptions = new ChromeOptions(); + if (!options[0].equals("")) chromeOptions.addArguments(options); + ChromeDriver chromeDriver = new ChromeDriver(chromeOptions); chromeDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); From d1f7e2e57ff57ebec75e97a332ed87e85526ae3c Mon Sep 17 00:00:00 2001 From: dkostichev Date: Tue, 10 Jul 2018 14:54:42 +0300 Subject: [PATCH 7/8] fix opera driver --- .../ru/alfabank/tests/core/drivers/CustomDriverProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index 6ed1f753..5085a3f7 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -105,7 +105,7 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); capabilities = getOperaDriverCapabilities(); - return LOCAL.equalsIgnoreCase(remoteUrl) ? new OperaDriver() : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? operaDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); } ChromeOptions chromeOptions = new ChromeOptions(); From 05e91461071a809d27757c0a104f3b70bbc855ac Mon Sep 17 00:00:00 2001 From: dkostichev Date: Wed, 11 Jul 2018 17:32:17 +0300 Subject: [PATCH 8/8] updated delivery options to driver updated creating custom drivers --- .../core/drivers/CustomDriverProvider.java | 143 +++++++----------- .../tests/core/drivers/MobileChrome.java | 65 -------- 2 files changed, 55 insertions(+), 153 deletions(-) delete mode 100644 src/main/java/ru/alfabank/tests/core/drivers/MobileChrome.java diff --git a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java index 5085a3f7..084b4045 100644 --- a/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java +++ b/src/main/java/ru/alfabank/tests/core/drivers/CustomDriverProvider.java @@ -21,6 +21,7 @@ import net.lightbody.bmp.BrowserMobProxyServer; import net.lightbody.bmp.proxy.BlacklistEntry; import org.openqa.selenium.Dimension; +import org.openqa.selenium.MutableCapabilities; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; @@ -36,7 +37,6 @@ import java.net.MalformedURLException; import java.net.URI; import java.util.HashMap; -import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -49,9 +49,10 @@ * * Например, можно указать браузер, версию браузера, remote Url(где будут запущены тесты), ширину и высоту окна браузера: * -Dbrowser=chrome -DbrowserVersion=63.0 -DremoteUrl=http://some/url -Dwidth=1000 -Dheight=500 - * Если параметр remoteUrl не указан - тесты будут запущены локально в заданном браузере последней версии + * Если параметр remoteUrl не указан - тесты будут запущены локально в заданном браузере последней версии. + * Все необходимые опции можно прописывать в переменную options, разделяя их пробелом. * Если указан параметр remoteUrl и browser, но версия браузера не указана, - * по умолчанию для chrome будет установлена версия latest и для firefox версия latest + * по умолчанию будет установлена версия latest * Если браузер не указан - по умолчанию будет запущен chrome * По умолчанию размер окна браузера при remote запуске равен 1920x1080 * Предусмотрена возможность запуска в режиме мобильного браузера (-Dbrowser=mobile) @@ -61,7 +62,6 @@ public class CustomDriverProvider implements WebDriverProvider { public final static String MOBILE_DRIVER = "mobile"; public final static String BROWSER = "browser"; - public final static String BROWSER_VERSION = "browserVersion"; public final static String REMOTE_URL = "remoteUrl"; public final static String WINDOW_WIDTH = "width"; public final static String WINDOW_HEIGHT = "height"; @@ -71,53 +71,28 @@ public class CustomDriverProvider implements WebDriverProvider { public final static int DEFAULT_HEIGHT = 1080; private BrowserMobProxy proxy = new BrowserMobProxyServer(); + private String[] options = loadSystemPropertyOrDefault("options", "").split(" "); @Override public WebDriver createDriver(DesiredCapabilities capabilities) { String expectedBrowser = loadSystemPropertyOrDefault(BROWSER, CHROME); String remoteUrl = loadSystemPropertyOrDefault(REMOTE_URL, LOCAL); - String[] options = loadSystemPropertyOrDefault("options", "").split(" "); BlackList blackList = new BlackList(); if (FIREFOX.equalsIgnoreCase(expectedBrowser)) { - FirefoxOptions firefoxOptions = new FirefoxOptions(); - if (!options[0].equals("")) firefoxOptions.addArguments(options); - FirefoxDriver firefoxDriver = new FirefoxDriver(firefoxOptions); - - firefoxDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), - loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); - - capabilities = getFirefoxDriverCapabilities(); - return LOCAL.equalsIgnoreCase(remoteUrl) ? firefoxDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? createFirefoxDriver() : getRemoteDriver(getFirefoxDriverOptions(), remoteUrl, blackList.getBlacklistEntries()); } if (MOBILE_DRIVER.equalsIgnoreCase(expectedBrowser)) { - capabilities.setCapability(ChromeOptions.CAPABILITY, getMobileChromeOptions()); - return LOCAL.equalsIgnoreCase(remoteUrl) ? new ChromeDriver(getMobileChromeOptions()) : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? new ChromeDriver(getMobileChromeOptions()) : getRemoteDriver(getMobileChromeOptions(), remoteUrl, blackList.getBlacklistEntries()); } if (OPERA.equalsIgnoreCase(expectedBrowser)) { - OperaOptions operaOptions = new OperaOptions(); - if (!options[0].equals("")) operaOptions.addArguments(options); - OperaDriver operaDriver = new OperaDriver(operaOptions); - - operaDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), - loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); - - capabilities = getOperaDriverCapabilities(); - return LOCAL.equalsIgnoreCase(remoteUrl) ? operaDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + return LOCAL.equalsIgnoreCase(remoteUrl) ? createOperaDriver() : getRemoteDriver(getOperaDriverOptions(), remoteUrl, blackList.getBlacklistEntries()); } - ChromeOptions chromeOptions = new ChromeOptions(); - if (!options[0].equals("")) chromeOptions.addArguments(options); - ChromeDriver chromeDriver = new ChromeDriver(chromeOptions); - - chromeDriver.manage().window().setSize(new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), - loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); - - log.info("remoteUrl=" + remoteUrl + " expectedBrowser= " + expectedBrowser + " BROWSER_VERSION=" + System.getProperty(BROWSER_VERSION)); - capabilities = getChromeDriverCapabilities(); - return LOCAL.equalsIgnoreCase(remoteUrl) ? chromeDriver : getRemoteDriver(capabilities, remoteUrl, blackList.getBlacklistEntries()); + log.info("remoteUrl=" + remoteUrl + " expectedBrowser= " + expectedBrowser + " BROWSER_VERSION=" + System.getProperty(CapabilityType.BROWSER_VERSION)); + return LOCAL.equalsIgnoreCase(remoteUrl) ? createChromeDriver() : getRemoteDriver(getChromeDriverOptions(), remoteUrl, blackList.getBlacklistEntries()); } /** @@ -127,18 +102,16 @@ public WebDriver createDriver(DesiredCapabilities capabilities) { * @param remoteUrl - url для запуска тестов, например http://remoteIP:4444/wd/hub * @return */ - private WebDriver getRemoteDriver(DesiredCapabilities capabilities, String remoteUrl) { + private WebDriver getRemoteDriver(MutableCapabilities capabilities, String remoteUrl) { log.info("---------------run Selenoid Remote Driver---------------------"); - Integer browserWidth = loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH); - Integer browserHeight = loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT); capabilities.setCapability("enableVNC", true); + capabilities.setCapability("screenResolution", String.format("%sx%s", loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), + loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT))); try { - RemoteWebDriver driver = new RemoteWebDriver( + return new RemoteWebDriver( URI.create(remoteUrl).toURL(), capabilities ); - driver.manage().window().setSize(new Dimension(browserWidth, browserHeight)); - return driver; } catch (MalformedURLException e) { throw new RuntimeException(e); } @@ -152,7 +125,7 @@ private WebDriver getRemoteDriver(DesiredCapabilities capabilities, String remot * @param blacklistEntries - список url для добавления в Blacklist * @return */ - private WebDriver getRemoteDriver(DesiredCapabilities capabilities, String remoteUrl, List blacklistEntries) { + private WebDriver getRemoteDriver(MutableCapabilities capabilities, String remoteUrl, List blacklistEntries) { proxy.setBlacklist(blacklistEntries); return getRemoteDriver(capabilities, remoteUrl); } @@ -166,9 +139,7 @@ private WebDriver getRemoteDriver(DesiredCapabilities capabilities, String remot private ChromeOptions getMobileChromeOptions() { log.info("---------------run CustomMobileDriver---------------------"); String mobileDeviceName = loadSystemPropertyOrDefault("device", "Nexus 5"); - ChromeOptions chromeOptions = new ChromeOptions(); - - chromeOptions.addArguments("disable-extensions", + ChromeOptions chromeOptions = new ChromeOptions().addArguments("disable-extensions", "test-type", "no-default-browser-check", "ignore-certificate-errors"); Map mobileEmulation = new HashMap<>(); @@ -182,12 +153,11 @@ private ChromeOptions getMobileChromeOptions() { * * @return */ - private DesiredCapabilities getChromeDriverCapabilities() { + private ChromeOptions getChromeDriverOptions() { log.info("---------------Chrome Driver---------------------"); - DesiredCapabilities capabilities = DesiredCapabilities.chrome(); - capabilities.setBrowserName(CHROME); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); - return capabilities; + ChromeOptions chromeOptions = !options[0].equals("") ? new ChromeOptions().addArguments(options) : new ChromeOptions(); + chromeOptions.setCapability(CapabilityType.BROWSER_VERSION, VERSION_LATEST); + return chromeOptions; } /** @@ -195,12 +165,11 @@ private DesiredCapabilities getChromeDriverCapabilities() { * * @return */ - private DesiredCapabilities getFirefoxDriverCapabilities() { + private FirefoxOptions getFirefoxDriverOptions() { log.info("---------------Firefox Driver---------------------"); - DesiredCapabilities capabilities = DesiredCapabilities.firefox(); - capabilities.setBrowserName(FIREFOX); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); - return capabilities; + FirefoxOptions firefoxOptions = !options[0].equals("") ? new FirefoxOptions().addArguments(options) : new FirefoxOptions(); + firefoxOptions.setCapability(CapabilityType.BROWSER_VERSION, VERSION_LATEST); + return firefoxOptions; } /** @@ -208,43 +177,41 @@ private DesiredCapabilities getFirefoxDriverCapabilities() { * * @return */ - private DesiredCapabilities getOperaDriverCapabilities() { + private OperaOptions getOperaDriverOptions() { log.info("---------------Opera Driver---------------------"); - DesiredCapabilities capabilities = DesiredCapabilities.operaBlink(); - capabilities.setBrowserName(OPERA); - capabilities.setVersion(loadSystemPropertyOrDefault(BROWSER_VERSION, VERSION_LATEST)); - return capabilities; + OperaOptions operaOptions = !options[0].equals("") ? new OperaOptions().addArguments(options) : new OperaOptions(); + operaOptions.setCapability(CapabilityType.BROWSER_VERSION, VERSION_LATEST); + return operaOptions; + } + + /** + * Создает WebDriver + * + * @return + */ + private WebDriver createChromeDriver(){ + ChromeDriver chromeDriver = new ChromeDriver(getChromeDriverOptions()); + chromeDriver.manage().window().setSize(setDimension()); + return chromeDriver; + } + + private WebDriver createFirefoxDriver(){ + FirefoxDriver firefoxDriver = new FirefoxDriver(getFirefoxDriverOptions()); + firefoxDriver.manage().window().setSize(setDimension()); + return firefoxDriver; + } + + private WebDriver createOperaDriver(){ + OperaDriver operaDriver = new OperaDriver(getOperaDriverOptions()); + operaDriver.manage().window().setSize(setDimension()); + return operaDriver; } /** - * Используется для создания хром-браузера с пользовательскими настройками - * ("profile.default_content_settings.popups", 0) - блокирует всплывающие окна - * ("download.prompt_for_download", "false") - выключает подтверждение (и выбор пути) для загрузки файла - * ("download.default_directory", ...) - устанавливает стандартную папку загрузки файлов - * "plugins.plugins_disabled", new String[]{ - * "Adobe Flash Player", "Chrome PDF Viewer" - выключает плагины - *

- * Чтобы задать папку для загрузки файлов пропишите абсолютный путь - * в fileDownloadPath в application.properties - *

- * Полный список параметров, которые можно установить таким способом: - * https://sites.google.com/a/chromium.org/chromedriver/capabilities + * Задает настройки разрешения */ - private DesiredCapabilities getCapabilitiesWithCustomFileDownloadFolder(DesiredCapabilities capabilities) { - Map preferences = new Hashtable<>(); - preferences.put("profile.default_content_settings.popups", 0); - preferences.put("download.prompt_for_download", "false"); - String downloadsPath = System.getProperty("user.home") + "/Downloads"; - preferences.put("download.default_directory", loadSystemPropertyOrDefault("fileDownloadPath", downloadsPath)); - preferences.put("plugins.plugins_disabled", new String[]{ - "Adobe Flash Player", "Chrome PDF Viewer"}); - capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); - - ChromeOptions options = new ChromeOptions(); - options.setExperimentalOption("prefs", preferences); - - capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); - capabilities.setCapability(ChromeOptions.CAPABILITY, options); - return capabilities; + private Dimension setDimension(){ + return new Dimension(loadSystemPropertyOrDefault(WINDOW_WIDTH, DEFAULT_WIDTH), + loadSystemPropertyOrDefault(WINDOW_HEIGHT, DEFAULT_HEIGHT)); } } diff --git a/src/main/java/ru/alfabank/tests/core/drivers/MobileChrome.java b/src/main/java/ru/alfabank/tests/core/drivers/MobileChrome.java deleted file mode 100644 index c8813b50..00000000 --- a/src/main/java/ru/alfabank/tests/core/drivers/MobileChrome.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2017 Alfa Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ru.alfabank.tests.core.drivers; - -import com.codeborne.selenide.WebDriverProvider; -import lombok.extern.slf4j.Slf4j; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import org.openqa.selenium.remote.DesiredCapabilities; - -import java.util.HashMap; -import java.util.Map; - -import static ru.alfabank.tests.core.helpers.PropertyLoader.loadSystemPropertyOrDefault; - - -/** - * Эмуляция мобильной версии браузера Google Chrome - */ - - -@Slf4j -@Deprecated -public class MobileChrome implements WebDriverProvider { - - /** - * Создание instance google chrome эмулирующего работу на мобильном устройстве (по умолчанию nexus 5) - * Мобильное устройство может быть задано через системные переменные - * - * @param capabilities настройки Chrome браузера - * @return возвращает новый instance Chrome драйера - */ - - @Override - public WebDriver createDriver(DesiredCapabilities capabilities) { - log.info("---------------run CustomMobileDriver---------------------"); - String mobileDeviceName = loadSystemPropertyOrDefault("device", "Nexus 5"); - Map mobileEmulation = new HashMap<>(); - mobileEmulation.put("deviceName", mobileDeviceName); - - Map chromeOptions = new HashMap<>(); - chromeOptions.put("mobileEmulation", mobileEmulation); - - DesiredCapabilities desiredCapabilities = DesiredCapabilities.chrome(); - desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions); - desiredCapabilities.setBrowserName(desiredCapabilities.chrome().getBrowserName()); - return new ChromeDriver(desiredCapabilities); - } - - -}