diff --git a/.travis.yml b/.travis.yml index 4e5ec37..4f23414 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,8 +8,6 @@ env: - PROFILE=build,firefox - PROFILE=build,googlechromeheadless - PROFILE=build,firefoxheadless - - PROFILE=build,phantomjs - - PROFILE=build,htmlunitwithjs stages: - test diff --git a/README.md b/README.md index 6b584f8..714edf3 100644 --- a/README.md +++ b/README.md @@ -45,24 +45,25 @@ your pom.xml: com.github.hi-fi robotframework-seleniumlibrary - 3.14.0.0 + 3.141.59.2 test If you cannot use the robotframework-maven-plugin you can use the -[jar-with-dependencies](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.14.0.0/robotframework-seleniumlibrary-3.14.0.0-jar-with-dependencies.jar), -which contains all required libraries. +[jar-with-dependencies](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.141.59.2/robotframework-seleniumlibrary-3.141.59.2-jar-with-dependencies.jar), +which contains all required libraries. Running of tests with this can be done with command `java -jar robotframework-seleniumlibrary-3.141.59.2-jar-with-dependencies.jar `. * More information about this library can be found in the - [Keyword Documentation](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.14.0.0/robotframework-seleniumlibrary-3.14.0.0.html). + [Keyword Documentation](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.141.59.2/robotframework-seleniumlibrary-3.141.59.2.html). * For keyword completion in RIDE you can download this - [Library Specs](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.14.0.0/robotframework-seleniumlibrary-3.14.0.0.xml) + [Library Specs](http://central.maven.org/maven2/com/github/hi-fi/robotframework-seleniumlibrary/3.141.59.2/robotframework-seleniumlibrary-3.141.59.2.xml) and place it in your PYTHONPATH. Differences ----------- * Some keyword differences between this and [Python version](https://github.com/robotframework/SeleniumLibrary) exists. (Same) keywords should be aligned in upcoming versions. +* Older version of the library was imported as `Library Selenium2Library` (both Java and Python versions). Since 2.53.1.1 (and all 3.x versions) import is done as `Library SeleniumLibrary` Browser drivers diff --git a/pom.xml b/pom.xml index 5e2c821..508dcdc 100644 --- a/pom.xml +++ b/pom.xml @@ -1,10 +1,11 @@ - 4.0.0 com.github.hi-fi robotframework-seleniumlibrary - 3.14.0.1-SNAPSHOT + 3.141.59.26-SNAPSHOT jar Robot Framework :: SeleniumLibrary @@ -67,10 +68,10 @@ true true 1.9.1 - 1.7 - 3.0.4 - 1.4.7 - 3.14.0 + 1.8 + 1.5.1 + 3.1.1 + 3.141.59 SeleniumLibrary jbrowser @@ -81,16 +82,16 @@ javalib-core 1.2.1 - - org.seleniumhq.selenium - selenium-server - ${selenium.version} - org.robotframework robotframework ${robotframework.version} + + org.seleniumhq.selenium + selenium-server + ${selenium.version} + org.aspectj aspectjrt @@ -115,46 +116,17 @@ io.appium java-client - 5.0.4 - - - org.seleniumhq.selenium - selenium-java - - - org.seleniumhq.selenium - selenium-support - - - org.seleniumhq.selenium - selenium-api - - + 7.0.0 org.apache.commons commons-exec 1.3 - - com.codeborne - phantomjsdriver - 1.4.4 - - - org.seleniumhq.selenium - selenium-api - - - org.seleniumhq.selenium - selenium-remote-driver - - - com.machinepublishers jbrowserdriver - 1.0.0 + 1.0.1 org.mockito @@ -380,6 +352,12 @@ maven-assembly-plugin 2.6 + + + true + org.robotframework.RobotFramework + + jar-with-dependencies @@ -412,45 +390,20 @@ org.robotframework robotframework-maven-plugin - - - -Dwebdriver.gecko.driver=${webdriver.gecko.driver} - - + + + -Dwebdriver.gecko.driver=${webdriver.gecko.driver} + + - - firefoxheadless - - firefoxheadless - - - - - com.lazerycode.selenium - driver-binary-downloader-maven-plugin - - - org.robotframework - robotframework-maven-plugin - - - - -Dwebdriver.gecko.driver=${webdriver.gecko.driver} - - - - - - - - phantomjs + firefoxheadless - phantomjs + firefoxheadless @@ -461,13 +414,13 @@ org.robotframework robotframework-maven-plugin - - - - -Dphantomjs.binary.path=${phantomjs.binary.path} - - - + + + + -Dwebdriver.gecko.driver=${webdriver.gecko.driver} + + + @@ -486,52 +439,38 @@ org.robotframework robotframework-maven-plugin - - - - -Dwebdriver.chrome.driver=${webdriver.chrome.driver} - - - + + + + -Dwebdriver.chrome.driver=${webdriver.chrome.driver} + + + - googlechromeheadless - - googlechromeheadless - - - - - com.lazerycode.selenium - driver-binary-downloader-maven-plugin - - - org.robotframework - robotframework-maven-plugin - - - - -Dwebdriver.chrome.driver=${webdriver.chrome.driver} - - - - - - - - - htmlunitwithjs + googlechromeheadless - htmlunitwithjs + googlechromeheadless + + com.lazerycode.selenium + driver-binary-downloader-maven-plugin + org.robotframework robotframework-maven-plugin + + + + -Dwebdriver.chrome.driver=${webdriver.chrome.driver} + + + diff --git a/src/main/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagement.java b/src/main/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagement.java index 81528b9..de09911 100644 --- a/src/main/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagement.java +++ b/src/main/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagement.java @@ -10,10 +10,8 @@ import java.net.URL; import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.TimeUnit; @@ -39,12 +37,10 @@ import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; -import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.ie.InternetExplorerOptions; import org.openqa.selenium.opera.OperaDriver; import org.openqa.selenium.opera.OperaOptions; -import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.remote.Augmenter; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.HttpCommandExecutor; @@ -171,9 +167,6 @@ public void closeBrowser() { "| Opera | opera |\r\n" + "| Android | android |\r\n" + "| Iphone | iphone |\r\n" + - "| PhantomJS | phantomjs |\r\n" + - "| HTMLUnit | htmlunit |\r\n" + - "| HTMLUnit with Javascript | htmlunitwithjs |\r\n" + "| JBrowser | jbrowser |\r\n" + "\r\n" + "To be able to actually use one of these browsers, you need to have a matching Selenium browser driver available. See the [https://github.com/Hi-Fi/robotframework-seleniumlibrary-java#browser-drivers|project documentation] for more details.\r\n" + @@ -659,19 +652,8 @@ protected WebDriver createLocalWebDriver(String browserName, Capabilities desire return new ChromeDriver((ChromeOptions)desiredCapabilities); case "opera": return new OperaDriver(new OperaOptions().merge(desiredCapabilities)); - case "phantomjs": - logging.warn("Phantomjs going to be removed as it's development is suspended. Should move to some other browser" ); - return new PhantomJSDriver(desiredCapabilities); case "safari": return new SafariDriver(new SafariOptions().merge(desiredCapabilities)); - case "htmlunit": - logging.warn("HTMLUnit-driver going to be removed from Selenium. Should move to some other browser" ); - return new HtmlUnitDriver(desiredCapabilities); - case "htmlunitwithjs": - logging.warn("HTMLUnit-driver going to be removed from Selenium. Should move to some other browser" ); - HtmlUnitDriver driver = new HtmlUnitDriver(desiredCapabilities); - driver.setJavascriptEnabled(true); - return driver; case "jbrowser": return new JBrowserDriver(Settings.builder().build()); case "android": @@ -738,19 +720,9 @@ protected Capabilities createCapabilities(String browserName, String desiredCapa case "opera": desiredCapabilities = new OperaOptions(); break; - case "phantomjs": - logging.warn("Phantomjs going to be removed as it's development is suspended. Should move to some other browser" ); - desiredCapabilities = DesiredCapabilities.phantomjs(); - break; case "safari": desiredCapabilities = new SafariOptions(); break; - case "htmlunit": - case "htmlunitwithjs": - logging.warn("HTMLUnit-driver going to be removed from Selenium. Should move to some other browser" ); - desiredCapabilities = DesiredCapabilities.htmlUnit(); - ((DesiredCapabilities) desiredCapabilities).setBrowserName("htmlunit"); - break; case "jbrowser": desiredCapabilities = new DesiredCapabilities("jbrowser", "1", Platform.ANY); break; @@ -786,20 +758,37 @@ protected void parseBrowserOptionsChrome(String browserOptions, Capabilities des if (browserOptions != null && !"NONE".equalsIgnoreCase(browserOptions)) { JSONObject jsonObject = (JSONObject) JSONValue.parse(browserOptions); if (jsonObject != null) { - List args = new ArrayList<>(); - for (Object arg : (JSONArray)jsonObject.get("args")) { - args.add("--"+arg.toString().replace("--", "")); - } - ((ChromeOptions) desiredCapabilities).addArguments(args); - List extensions = new ArrayList<>(); - for (Object extension : (JSONArray)jsonObject.get("extensions")) { - extensions.add(new File(extension.toString().toString().replace('/', File.separatorChar))); + // Check all properties for translation to ChromeOptions + for (Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext(); ) { + String key = (String)iterator.next(); + switch (key) { + case "args": { + // args is a list of strings + List args = new ArrayList<>(); + for (Object arg : (JSONArray)jsonObject.get(key)) { + args.add("--"+arg.toString().replace("--", "")); + } + ((ChromeOptions) desiredCapabilities).addArguments(args); + break; + } + case "extensions": { + List extensions = new ArrayList<>(); + for (Object extension : (JSONArray)jsonObject.get(key)) { + extensions.add(new File(extension.toString().toString().replace('/', File.separatorChar))); + } + ((ChromeOptions) desiredCapabilities).addExtensions(extensions); + break; + } + case "disable-extensions": + // change casing + ((ChromeOptions) desiredCapabilities).setExperimentalOption("useAutomationExtension", false); + break; + default: + // all unknonw properties are passed as is + ((ChromeOptions) desiredCapabilities).setExperimentalOption(key, jsonObject.get(key)); + break; + } } - ((ChromeOptions) desiredCapabilities).addExtensions(extensions); - ((ChromeOptions) desiredCapabilities).setExperimentalOption("prefs", jsonObject.get("prefs")); - if (browserOptions.contains("disable-extensions")) { - ((ChromeOptions) desiredCapabilities).setExperimentalOption("useAutomationExtension", false); - } } else { logging.warn("Invalid browserOptions: " + browserOptions); } diff --git a/src/test/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagementTest.java b/src/test/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagementTest.java index b9f7e2a..7fbffe2 100644 --- a/src/test/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagementTest.java +++ b/src/test/java/com/github/markusbernhardt/seleniumlibrary/keywords/BrowserManagementTest.java @@ -62,12 +62,6 @@ public void testCreateDesiredCapabilitiesWithOnlyBrowserOptions() { assertTrue(profile.getStringPreference("network.proxy.http", "wrong") != "wrong"); } - @Test - public void testCreateDesiredCapabilitiesForHtmlUnit() { - Capabilities dc = bm.createCapabilities("htmlunitwithjs", null, ""); - assertTrue(dc.getBrowserName().equals("htmlunit")); - } - @Test public void parseChromeBrowserOptions() { ChromeOptions chromeOptions = new ChromeOptions(); diff --git a/src/test/robotframework/testsuites/UnitTests/AW3Schools.robot b/src/test/robotframework/testsuites/UnitTests/AW3Schools.robot index 21bb4a2..01fd369 100644 --- a/src/test/robotframework/testsuites/UnitTests/AW3Schools.robot +++ b/src/test/robotframework/testsuites/UnitTests/AW3Schools.robot @@ -7,7 +7,7 @@ ${URL Application} http://www.w3schools.com *** Test Cases *** Select - [Tags] phantomjs htmlunit htmlunitwithjs + [Tags] jbrowser Open Browser https://developer.mozilla.org/en/docs/Web/HTML/Element/select#Examples ${browser} mainbrowser Wait Until Page Contains Element xpath://select Select From List xpath://select Third Value diff --git a/src/test/robotframework/testsuites/UnitTests/ExtJS.robot b/src/test/robotframework/testsuites/UnitTests/ExtJS.robot index 47a9712..dded819 100644 --- a/src/test/robotframework/testsuites/UnitTests/ExtJS.robot +++ b/src/test/robotframework/testsuites/UnitTests/ExtJS.robot @@ -2,7 +2,7 @@ Suite Setup Open Page Suite Teardown Close Browser Resource ../../settings/Settings.robot -Default Tags phantomjs htmlunit htmlunitwithjs +Default Tags jbrowser *** Variables *** ${URL Application} http://examples.sencha.com/extjs/6.5.0/examples/classic/ticket-app/index.html @@ -21,7 +21,7 @@ Open Page *** Test Cases *** Buy Ticket - Run Keyword Unless "${browser}"=="phantomjs" Select Frame examples-iframe + Select Frame examples-iframe Wait Until Page Contains Element ${inputfield password} 10 Input Text ${inputfield password} password Capture Page Screenshot images${/}screenshot1.png diff --git a/src/test/robotframework/testsuites/UnitTests/GetInnerElementId.txt b/src/test/robotframework/testsuites/UnitTests/GetInnerElementId.robot similarity index 93% rename from src/test/robotframework/testsuites/UnitTests/GetInnerElementId.txt rename to src/test/robotframework/testsuites/UnitTests/GetInnerElementId.robot index f1126ad..64eb575 100644 --- a/src/test/robotframework/testsuites/UnitTests/GetInnerElementId.txt +++ b/src/test/robotframework/testsuites/UnitTests/GetInnerElementId.robot @@ -1,6 +1,6 @@ *** Settings *** Resource ../../settings/Settings.robot -Default Tags phantomjs +Default Tags jbrowser *** Test Cases *** Get Inner Element Id test diff --git a/src/test/robotframework/testsuites/UnitTests/Google.robot b/src/test/robotframework/testsuites/UnitTests/Google.robot index 5d5c831..856b9cc 100644 --- a/src/test/robotframework/testsuites/UnitTests/Google.robot +++ b/src/test/robotframework/testsuites/UnitTests/Google.robot @@ -4,9 +4,8 @@ Suite Teardown Google.Site.Close Test Setup Google.Site.Init Resource ../../settings/Settings.robot Resource ../../imports/Google.txt -Default Tags phantomjs htmlunit htmlunitwithjs -*** Testcases *** +*** Test cases *** Open And Close Google Site Capture Page Screenshot diff --git a/src/test/robotframework/testsuites/UnitTests/JSEvents.robot b/src/test/robotframework/testsuites/UnitTests/JSEvents.robot index 5201f71..bb10493 100644 --- a/src/test/robotframework/testsuites/UnitTests/JSEvents.robot +++ b/src/test/robotframework/testsuites/UnitTests/JSEvents.robot @@ -2,7 +2,6 @@ Suite Setup Open Page Suite Teardown Close All Browsers Resource ../../settings/Settings.robot -Default Tags htmlunit htmlunitwithjs *** Variables *** ${URL Application} http://fiddle.jshell.net/ShPVX/show/ diff --git a/src/test/robotframework/testsuites/UnitTests/WhatAreCookies.robot b/src/test/robotframework/testsuites/UnitTests/WhatAreCookies.robot index 8f8af3d..b589265 100644 --- a/src/test/robotframework/testsuites/UnitTests/WhatAreCookies.robot +++ b/src/test/robotframework/testsuites/UnitTests/WhatAreCookies.robot @@ -1,6 +1,5 @@ *** Settings *** Resource ../../settings/Settings.robot -Default Tags htmlunit htmlunitwithjs *** Test Cases *** Cookies