diff --git a/CHANGES.md b/CHANGES.md index 218a57a..c492b53 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,7 +1,15 @@ CHANGES ======= -unreleased +Unreleased +---------- +* Updating xml-doclet to version 1.0.5 +* Updating selenium-server to version 2.48.2 +* Updating aspectjrt to version 1.8.7 +* Updating selendroid-client to version 0.17.0 +* Updating java-client to version 3.2.0 + +1.4.0.7 ---------- * Avoid NullPointerException in isEnabled method. See #53, #56. Great thanks to atcarmo for this patch. * Updated selenium-server dependency to 2.43.1. See #58. Great thanks to WojtekKowaluk for this patch. diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 4ab7593..d8d0057 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -1,71 +1,93 @@ [INFO] ------------------------------------------------------------------------ - [INFO] Building Robot Framework :: Selenium2Library 1.2.0.14-SNAPSHOT + [INFO] Building Robot Framework :: Selenium2Library 1.4.0.8-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] - [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ robotframework-selenium2library-java --- - [INFO] com.github.markusbernhardt:robotframework-selenium2library-java:jar:1.2.0.14-SNAPSHOT - [INFO] +- org.robotframework:javalib-core:jar:1.2:compile + [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ robotframework-selenium2library-java --- + [INFO] com.github.markusbernhardt:robotframework-selenium2library-java:jar:1.4.0.8-SNAPSHOT + [INFO] +- org.robotframework:javalib-core:jar:1.2.1:compile [INFO] | +- commons-collections:commons-collections:jar:3.2:compile [INFO] | \- com.thoughtworks.paranamer:paranamer:jar:1.1.2:compile - [INFO] +- org.seleniumhq.selenium:selenium-server:jar:2.34.0:compile + [INFO] +- com.github.markusbernhardt:xml-doclet:jar:1.0.5:compile + [INFO] | +- com.sun:tools:jar:1.7:system + [INFO] | +- commons-cli:commons-cli:jar:1.2:compile + [INFO] | \- org.slf4j:slf4j-api:jar:1.7.12:compile + [INFO] +- org.seleniumhq.selenium:selenium-server:jar:2.48.2:compile + [INFO] | +- com.beust:jcommander:jar:1.48:compile [INFO] | +- org.bouncycastle:bcprov-jdk15on:jar:1.48:compile [INFO] | +- org.bouncycastle:bcpkix-jdk15on:jar:1.48:compile [INFO] | +- mx4j:mx4j-tools:jar:3.0.1:compile [INFO] | +- org.mortbay.jetty:servlet-api-2.5:jar:6.1.9:compile - [INFO] | +- org.seleniumhq.selenium:jetty-repacked:jar:7.6.1:compile + [INFO] | +- org.seleniumhq.selenium:jetty-repacked:jar:9.2.13.v20150730:compile + [INFO] | +- javax.servlet:javax.servlet-api:jar:3.1.0:compile + [INFO] | +- org.seleniumhq.selenium:jetty-rc-repacked:jar:5:compile [INFO] | +- net.jcip:jcip-annotations:jar:1.0:compile - [INFO] | +- org.seleniumhq.selenium:selenium-java:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-android-driver:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.34.0:compile - [INFO] | | | \- net.sourceforge.htmlunit:htmlunit:jar:2.12:compile - [INFO] | | | +- xalan:xalan:jar:2.7.1:compile - [INFO] | | | | \- xalan:serializer:jar:2.7.1:compile - [INFO] | | | +- org.apache.commons:commons-lang3:jar:3.1:compile - [INFO] | | | +- org.apache.httpcomponents:httpmime:jar:4.2.3:compile - [INFO] | | | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.12:compile - [INFO] | | | +- xerces:xercesImpl:jar:2.10.0:compile + [INFO] | +- org.seleniumhq.selenium:selenium-java:jar:2.48.2:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-chrome-driver:jar:2.48.2:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-edge-driver:jar:2.48.2:compile + [INFO] | | | \- commons-io:commons-io:jar:2.4:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.48.2:compile + [INFO] | | | \- net.sourceforge.htmlunit:htmlunit:jar:2.18:compile + [INFO] | | | +- xalan:xalan:jar:2.7.2:compile + [INFO] | | | | \- xalan:serializer:jar:2.7.2:compile + [INFO] | | | +- org.apache.commons:commons-lang3:jar:3.4:compile + [INFO] | | | +- org.apache.httpcomponents:httpmime:jar:4.5:compile + [INFO] | | | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.17:compile + [INFO] | | | +- xerces:xercesImpl:jar:2.11.0:compile [INFO] | | | | \- xml-apis:xml-apis:jar:1.4.01:compile - [INFO] | | | +- net.sourceforge.nekohtml:nekohtml:jar:1.9.18:compile - [INFO] | | | +- net.sourceforge.cssparser:cssparser:jar:0.9.9:compile + [INFO] | | | +- net.sourceforge.nekohtml:nekohtml:jar:1.9.22:compile + [INFO] | | | +- net.sourceforge.cssparser:cssparser:jar:0.9.16:compile [INFO] | | | | \- org.w3c.css:sac:jar:1.3:compile - [INFO] | | | \- org.eclipse.jetty:jetty-websocket:jar:8.1.9.v20130131:compile - [INFO] | | | +- org.eclipse.jetty:jetty-util:jar:8.1.9.v20130131:compile - [INFO] | | | +- org.eclipse.jetty:jetty-io:jar:8.1.9.v20130131:compile - [INFO] | | | \- org.eclipse.jetty:jetty-http:jar:8.1.9.v20130131:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.34.0:compile - [INFO] | | | \- commons-io:commons-io:jar:2.2:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-iphone-driver:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.34.0:compile - [INFO] | | +- org.seleniumhq.selenium:selenium-support:jar:2.34.0:compile - [INFO] | | \- org.webbitserver:webbit:jar:0.4.14:compile - [INFO] | | \- io.netty:netty:jar:3.5.2.Final:compile + [INFO] | | | \- org.eclipse.jetty.websocket:websocket-client:jar:9.2.12.v20150709:compile + [INFO] | | | +- org.eclipse.jetty:jetty-util:jar:9.2.12.v20150709:compile + [INFO] | | | +- org.eclipse.jetty:jetty-io:jar:9.2.12.v20150709:compile + [INFO] | | | \- org.eclipse.jetty.websocket:websocket-common:jar:9.2.12.v20150709:compile + [INFO] | | | \- org.eclipse.jetty.websocket:websocket-api:jar:9.2.12.v20150709:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:2.48.2:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-ie-driver:jar:2.48.2:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-safari-driver:jar:2.48.2:compile + [INFO] | | +- org.seleniumhq.selenium:selenium-support:jar:2.48.2:compile + [INFO] | | +- org.webbitserver:webbit:jar:0.4.14:compile + [INFO] | | | \- io.netty:netty:jar:3.5.2.Final:compile + [INFO] | | \- org.seleniumhq.selenium:selenium-leg-rc:jar:2.48.2:compile [INFO] | +- org.yaml:snakeyaml:jar:1.8:compile - [INFO] | \- commons-codec:commons-codec:jar:1.6:compile + [INFO] | \- commons-codec:commons-codec:jar:1.10:compile [INFO] +- com.opera:operadriver:jar:1.5:compile [INFO] | +- com.opera:operalaunchers:jar:1.1:compile [INFO] | +- com.google.protobuf:protobuf-java:jar:2.4.1:compile [INFO] | +- com.google.guava:guava:jar:14.0:compile [INFO] | +- commons-jxpath:commons-jxpath:jar:1.3:compile - [INFO] | +- org.apache.commons:commons-exec:jar:1.1:compile [INFO] | \- org.ini4j:ini4j:jar:0.5.2:compile - [INFO] +- com.github.detro.ghostdriver:phantomjsdriver:jar:1.0.4:compile - [INFO] | \- org.seleniumhq.selenium:selenium-remote-driver:jar:2.33.0:compile - [INFO] | +- cglib:cglib-nodep:jar:2.1_3:compile - [INFO] | +- org.json:json:jar:20080701:compile - [INFO] | +- org.seleniumhq.selenium:selenium-api:jar:2.33.0:compile - [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.2.1:compile - [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.2.1:compile - [INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile - [INFO] | +- net.java.dev.jna:jna:jar:3.4.0:compile - [INFO] | \- net.java.dev.jna:platform:jar:3.4.0:compile - [INFO] +- org.robotframework:robotframework:jar:2.8.1:compile - [INFO] \- org.aspectj:aspectjrt:jar:1.7.3:compile + [INFO] +- com.github.detro.ghostdriver:phantomjsdriver:jar:1.1.0:compile + [INFO] +- org.robotframework:robotframework:jar:2.9.2:compile + [INFO] +- org.aspectj:aspectjrt:jar:1.8.7:compile + [INFO] +- com.googlecode.json-simple:json-simple:jar:1.1.1:compile + [INFO] | \- junit:junit:jar:4.10:compile + [INFO] | \- org.hamcrest:hamcrest-core:jar:1.1:compile + [INFO] +- org.seleniumhq.selenium:selenium-remote-driver:jar:2.48.2:compile + [INFO] | +- cglib:cglib-nodep:jar:2.1_3:compile + [INFO] | +- com.google.code.gson:gson:jar:2.3.1:compile + [INFO] | +- org.seleniumhq.selenium:selenium-api:jar:2.48.2:compile + [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.1:compile + [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.3:compile + [INFO] | | \- commons-logging:commons-logging:jar:1.2:compile + [INFO] | +- net.java.dev.jna:jna:jar:4.1.0:compile + [INFO] | \- net.java.dev.jna:jna-platform:jar:4.1.0:compile + [INFO] +- io.selendroid:selendroid-client:jar:0.17.0:compile + [INFO] | +- io.selendroid:selendroid-common:jar:0.17.0:compile + [INFO] | | \- org.json:json:jar:20090211:compile + [INFO] | \- io.selendroid:selendroid-server-common:jar:0.17.0:compile + [INFO] | \- io.netty:netty-all:jar:4.0.21.Final:compile + [INFO] +- io.appium:java-client:jar:3.2.0:compile + [INFO] | +- cglib:cglib:jar:3.1:compile + [INFO] | | \- org.ow2.asm:asm:jar:4.2:compile + [INFO] | \- commons-validator:commons-validator:jar:1.4.1:compile + [INFO] | +- commons-beanutils:commons-beanutils:jar:1.8.3:compile + [INFO] | \- commons-digester:commons-digester:jar:1.8.1:compile + [INFO] \- org.apache.commons:commons-exec:jar:1.3:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ - [INFO] Total time: 3.454s - [INFO] Finished at: Sat Oct 12 11:58:25 CEST 2013 - [INFO] Final Memory: 14M/213M + [INFO] Total time: 1.000 s + [INFO] Finished at: 2015-10-27T10:31:41+01:00 + [INFO] Final Memory: 19M/309M [INFO] ------------------------------------------------------------------------ \ No newline at end of file diff --git a/pom.xml b/pom.xml index 75d4e90..ea3c7c3 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 @@ -20,10 +21,11 @@ UTF-8 true true - 1.7.3 + 1.8.7 1.6 - 1.0.4 - 2.8.3 + 1.0.5 + 2.9.2 + 2.48.2 Selenium2Library @@ -52,7 +54,7 @@ org.robotframework javalib-core - 1.2 + 1.2.1 com.github.markusbernhardt @@ -62,7 +64,7 @@ org.seleniumhq.selenium selenium-server - 2.43.1 + ${selenium.version} com.opera @@ -92,17 +94,22 @@ org.seleniumhq.selenium selenium-remote-driver - 2.43.1 + ${selenium.version} io.selendroid selendroid-client - 0.11.0 + 0.17.0 io.appium java-client - 2.0.0 + 3.2.0 + + + org.apache.commons + commons-exec + 1.3 @@ -157,7 +164,7 @@ org.robotframework robotframework-maven-plugin - 1.2 + 1.4.5 test @@ -211,7 +218,7 @@ org.apache.maven.plugins maven-compiler-plugin - 2.5.1 + 3.3 ${java.version} ${java.version} @@ -225,7 +232,7 @@ org.apache.maven.plugins maven-assembly-plugin - 2.4 + 2.6 jar-with-dependencies @@ -245,7 +252,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 2.10.3 xml-doclet @@ -327,7 +334,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 2.10.3 attach-javadocs @@ -346,7 +353,7 @@ org.codehaus.mojo build-helper-maven-plugin - 1.8 + 1.9.1 attach-artifacts diff --git a/src/main/java/com/github/markusbernhardt/selenium2library/Selenium2Library.java b/src/main/java/com/github/markusbernhardt/selenium2library/Selenium2Library.java index 4d61611..aa8a878 100644 --- a/src/main/java/com/github/markusbernhardt/selenium2library/Selenium2Library.java +++ b/src/main/java/com/github/markusbernhardt/selenium2library/Selenium2Library.java @@ -360,13 +360,13 @@ public Selenium2Library(String timeout, String implicitWait) { * Default=Capture Page Screenshot. Optional custom keyword to * run on failure. */ - public Selenium2Library(String timeout, String implicitWait, String runOnFailure) { + public Selenium2Library(String timeout, String implicitWait, String keywordToRunOnFailure) { super(); addKeywordPattern(KEYWORD_PATTERN); createKeywordFactory(); // => init annotations browserManagement.setSeleniumTimeout(timeout); browserManagement.setSeleniumImplicitWait(implicitWait); - this.runOnFailure.registerKeywordToRunOnFailure(runOnFailure); + runOnFailure.registerKeywordToRunOnFailure(keywordToRunOnFailure); } // ############################## diff --git a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/BrowserManagement.java b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/BrowserManagement.java index 4918b33..ef3e68d 100644 --- a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/BrowserManagement.java +++ b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/BrowserManagement.java @@ -1,5 +1,8 @@ package com.github.markusbernhardt.selenium2library.keywords; +import io.appium.java_client.ios.IOSDriver; +import io.selendroid.client.SelendroidDriver; + import java.io.File; import java.io.IOException; import java.lang.reflect.Field; @@ -26,13 +29,11 @@ import org.openqa.selenium.Dimension; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; -import io.selendroid.SelendroidDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.htmlunit.HtmlUnitDriver; import org.openqa.selenium.ie.InternetExplorerDriver; -import io.appium.java_client.ios.IOSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.remote.Augmenter; import org.openqa.selenium.remote.DesiredCapabilities; @@ -1384,7 +1385,7 @@ protected WebDriver createLocalWebDriver(String browserName, DesiredCapabilities return driver; } else if ("iphone".equals(browserName) || "ipad".equals(browserName)) { try { - return new IOSDriver(new URL(""), desiredCapabilities); + return new IOSDriver(new URL(""), desiredCapabilities); } catch (Exception e) { throw new Selenium2LibraryFatalException("Creating " + browserName + " instance failed.", e); } diff --git a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/Logging.java b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/Logging.java index 399b1d3..23a87f2 100644 --- a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/Logging.java +++ b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/Logging.java @@ -365,12 +365,13 @@ protected void log0(String msg, String methodName, String methodArguments) { } protected File getLogDir() { - if (logDir == null) { - PyString logDirName = (PyString) loggingPythonInterpreter.get().eval("GLOBAL_VARIABLES['${LOG FILE}']"); + + if (logDir == null && !loggingPythonInterpreter.get().eval("EXECUTION_CONTEXTS.current").toString().equals("None")) { + PyString logDirName = (PyString) loggingPythonInterpreter.get().eval("BuiltIn().get_variables()['${LOG FILE}']"); if (logDirName != null && !(logDirName.asString().toUpperCase().equals("NONE"))) { return new File(logDirName.asString()).getParentFile(); } - logDirName = (PyString) loggingPythonInterpreter.get().eval("GLOBAL_VARIABLES['${OUTPUTDIR}']"); + logDirName = (PyString) loggingPythonInterpreter.get().eval("BuiltIn().get_variables()['${OUTPUTDIR}']"); return new File(logDirName.asString()).getParentFile(); } else { return new File(logDir); @@ -386,7 +387,7 @@ public static void setLogDir(String logDirectory) { @Override protected PythonInterpreter initialValue() { PythonInterpreter pythonInterpreter = new PythonInterpreter(); - pythonInterpreter.exec("from robot.variables import GLOBAL_VARIABLES; from robot.api import logger;"); + pythonInterpreter.exec("from robot.libraries.BuiltIn import BuiltIn; from robot.running.context import EXECUTION_CONTEXTS; from robot.api import logger;"); return pythonInterpreter; } }; diff --git a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/RunOnFailure.java b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/RunOnFailure.java index 25764c1..d45e1ef 100644 --- a/src/main/java/com/github/markusbernhardt/selenium2library/keywords/RunOnFailure.java +++ b/src/main/java/com/github/markusbernhardt/selenium2library/keywords/RunOnFailure.java @@ -99,7 +99,7 @@ public String registerKeywordToRunOnFailure(String keyword) { @Override protected PythonInterpreter initialValue() { PythonInterpreter pythonInterpreter = new PythonInterpreter(); - pythonInterpreter.exec("from robot.libraries import BuiltIn; BUILTIN = BuiltIn.BuiltIn();"); + pythonInterpreter.exec("from robot.libraries.BuiltIn import BuiltIn; from robot.running.context import EXECUTION_CONTEXTS; BIN = BuiltIn();"); return pythonInterpreter; } }; @@ -111,10 +111,13 @@ public void runOnFailure() { if (runningOnFailureRoutine) { return; } - runningOnFailureRoutine = true; + if(runOnFailurePythonInterpreter.get().eval("EXECUTION_CONTEXTS.current").toString().equals("None")) { + return; + } + try { runOnFailurePythonInterpreter.get().exec( - String.format("BUILTIN.run_keyword('%s')", + String.format("BIN.run_keyword('%s')", runOnFailureKeyword.replace("'", "\\'").replace("\n", "\\n"))); } catch (RuntimeException r) { logging.warn(String.format("Keyword '%s' could not be run on failure%s", runOnFailureKeyword, diff --git a/src/main/java/com/github/markusbernhardt/selenium2library/locators/ElementFinder.java b/src/main/java/com/github/markusbernhardt/selenium2library/locators/ElementFinder.java index c82b320..640485a 100644 --- a/src/main/java/com/github/markusbernhardt/selenium2library/locators/ElementFinder.java +++ b/src/main/java/com/github/markusbernhardt/selenium2library/locators/ElementFinder.java @@ -261,7 +261,7 @@ public static List find(WebDriver webDriver, String locator, String @Override protected PythonInterpreter initialValue() { PythonInterpreter pythonInterpreter = new PythonInterpreter(); - pythonInterpreter.exec("from robot.variables import GLOBAL_VARIABLES; from robot.api import logger;"); + pythonInterpreter.exec("from robot.libraries.BuiltIn import BuiltIn; from robot.api import logger;"); return pythonInterpreter; } }; diff --git a/src/test/robotframework/objects/Google.Search.txt b/src/test/robotframework/objects/Google.Search.txt index 198fe94..3acc4a9 100644 --- a/src/test/robotframework/objects/Google.Search.txt +++ b/src/test/robotframework/objects/Google.Search.txt @@ -4,7 +4,7 @@ Documentation Defines all required resources and keywords Resource ../adapters/Selenium2Library.txt *** Variables *** -${Google.Search.Locator.SearchField} id=gbqfq +${Google.Search.Locator.SearchField} id=lst-ib ${Google.Search.Locator.SearchResult.Rtomac} xpath=//a[contains(.,'MarkusBernhardt')] *** Keywords *** diff --git a/src/test/robotframework/testsuites/UnitTests/Google.txt b/src/test/robotframework/testsuites/UnitTests/Google.txt index 9d4f96b..0bcaa80 100644 --- a/src/test/robotframework/testsuites/UnitTests/Google.txt +++ b/src/test/robotframework/testsuites/UnitTests/Google.txt @@ -10,34 +10,29 @@ Open And Close Google Site Capture Page Screenshot Store Web Element In JavaScript - Execute Javascript window.document.my_element = window.document.getElementsByClassName('gbqfba')[0]; + Execute Javascript window.document.my_element = window.document.getElementsByClassName('gsfi')[0]; ${className}= Execute Javascript return window.document.my_element.className; - Should Be Equal ${className} gbqfba + Should Contain ${className} gsfi Search Robotframework Selenium2Library Google.Search.Search String Robotframework Selenium2Library Java Search With JavaScript Locator Selenium2Library.Add Location Strategy elementById return window.document.getElementById(arguments[0]); - Input Text elementById=gbqfq Robotframework Selenium2Library Java - Press Key elementById=gbqfq \\13 + Input Text elementById=lst-ib Robotframework Selenium2Library Java + Press Key elementById=lst-ib \\13 Wait Until Element Is Visible xpath=//a[contains(.,'MarkusBernhardt')] Capture Page Screenshot - -Search With JavaScript Locator And Delimiter - Selenium2Library.Add Location Strategy elementByClassname return window.document.getElementsByClassName(arguments[0])[arguments[1]]; , - Element Text Should Be elementByClassname=gbqfba,0 Google-Suche - Element Text Should Be elementByClassname=gbqfba,1 Auf gut Glück! - + Search With JavaScript Locator Text - Selenium2Library.Add Location Strategy text return window.document.evaluate("//*[contains(text(),'" + arguments[0] + "')]", window.document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; + Selenium2Library.Add Location Strategy text return window.document.evaluate("//*[contains(@value,'" + arguments[0] + "')]", window.document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; Wait Until Element Is Visible text=Google-Suche Search Without Locator Type - Input Text gbqfq Robotframework Selenium2Library Java - Press Key gbqfq \\13 + Input Text lst-ib Robotframework Selenium2Library Java + Press Key lst-ib \\13 Wait Until Element Is Visible //a[contains(.,'MarkusBernhardt')] Get Id Of Active Element With JavaScript - Input Text gbqfq Robotframework Selenium2Library + Input Text lst-ib Robotframework Selenium2Library ${activeElementId}= Execute JavaScript return window.document.activeElement.id;