Class RemoteWebDriver
- All Implemented Interfaces:
HasFederatedCredentialManagement,HasCapabilities,HasDownloads,Interactive,JavascriptExecutor,PrintsPage,SearchContext,TakesScreenshot,HasVirtualAuthenticator,WebDriver
- Direct Known Subclasses:
ChromiumDriver,FirefoxDriver,InternetExplorerDriver,SafariDriver
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classprotected classstatic enumNested classes/interfaces inherited from interface org.openqa.selenium.WebDriver
WebDriver.Navigation, WebDriver.Options, WebDriver.TargetLocator, WebDriver.Timeouts, WebDriver.Window -
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedRemoteWebDriver(URL remoteAddress, Capabilities capabilities) RemoteWebDriver(URL remoteAddress, Capabilities capabilities, boolean enableTracing) RemoteWebDriver(Capabilities capabilities) RemoteWebDriver(Capabilities capabilities, boolean enableTracing) RemoteWebDriver(CommandExecutor executor, Capabilities capabilities) -
Method Summary
Modifier and TypeMethodDescriptionAdds a virtual authenticator with the given options.static RemoteWebDriverBuilderbuilder()voidclose()Close the current window, quitting the browser if it's the last window currently open.voidDeletes all downloadable files.voiddownloadFile(String fileName, Path targetLocation) Downloads a file from the specified location.protected Responseprotected Responseprotected Responseexecute(CommandPayload payload) executeAsyncScript(String script, Object... args) Execute an asynchronous piece of JavaScript in the context of the currently selected frame or window.executeScript(String script, Object... args) Executes JavaScript in the context of the currently selected frame or window.findElement(By locator) Find the firstWebElementusing the given method.findElements(By locator) Find all elements within the current page using the given mechanism.findElements(SearchContext context, BiFunction<String, Object, CommandPayload> findCommand, By locator) voidLoad a new web page in the current browser window.Get a string representing the current URL that the browser is looking at.Retrieves the names of the downloadable files.protected JsonToWebElementConverterprotected ExecuteMethodGets the currently open FedCM dialog, or null if there is no dialog.Get the source of the last loaded page.<X> XgetScreenshotAs(OutputType<X> outputType) Capture the screenshot and store it in the specified location.getTitle()Get the title of the current page.Return an opaque handle to this window that uniquely identifies it within this driver instance.Return a set of window handles which can be used to iterate over all open windows of this WebDriver instance by passing them toWebDriver.switchTo().WebDriver.Options.window()booleanChecks if downloads are enabledprotected voidlog(SessionId sessionId, String commandName, Object toLog, RemoteWebDriver.When when) Override this to be notified at key points in the execution of a command.manage()Gets the Option interfacenavigate()An abstraction allowing the driver to access the browser's history and to navigate to a given URL.network()voidperform(Collection<Sequence> actions) print(PrintOptions printOptions) voidquit()Quits this driver, closing every associated window.voidremoveVirtualAuthenticator(VirtualAuthenticator authenticator) Removes a previously added virtual authenticator.voidResets the FedCM dialog cooldown.voidscript()protected voidsetCommandExecutor(CommandExecutor executor) voidsetDelayEnabled(boolean enabled) Disables the promise rejection delay.protected voidsetElementConverter(JsonToWebElementConverter converter) voidsetErrorHandler(ErrorHandler handler) voidsetFileDetector(FileDetector detector) Set the file detector to be used when sending keyboard input.protected voidsetFoundBy(SearchContext context, WebElement element, String by, String using) voidsetLogLevel(Level level) Sets the RemoteWebDriver's client log level.protected voidsetSessionId(String opaqueKey) protected voidstartSession(Capabilities capabilities) switchTo()Send future commands to a different frame or window.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.openqa.selenium.HasDownloads
requireDownloadsEnabledMethods inherited from interface org.openqa.selenium.JavascriptExecutor
executeScript, getPinnedScripts, pin, unpin
-
Field Details
-
capabilities
-
-
Constructor Details
-
RemoteWebDriver
protected RemoteWebDriver() -
RemoteWebDriver
-
RemoteWebDriver
-
RemoteWebDriver
-
RemoteWebDriver
-
RemoteWebDriver
-
-
Method Details
-
builder
-
getSessionId
-
setSessionId
-
startSession
-
getErrorHandler
-
setErrorHandler
-
getCommandExecutor
-
setCommandExecutor
-
getCapabilities
- Specified by:
getCapabilitiesin interfaceHasCapabilities- Returns:
- The capabilities of the current driver.
-
get
Description copied from interface:WebDriverLoad a new web page in the current browser window. This is done using an HTTP POST operation, and the method will block until the load is complete (with the default 'page load strategy'. This will follow redirects issued either by the server or as a meta-redirect from within the returned HTML. Should a meta-redirect "rest" for any duration of time, it is best to wait until this timeout is over, since should the underlying page change whilst your test is executing the results of future calls against this interface will be against the freshly loaded page. Synonym forWebDriver.Navigation.to(String).See W3C WebDriver specification for more details.
-
getTitle
Description copied from interface:WebDriverGet the title of the current page.See W3C WebDriver specification for more details.
-
getCurrentUrl
Description copied from interface:WebDriverGet a string representing the current URL that the browser is looking at.See W3C WebDriver specification for more details.
- Specified by:
getCurrentUrlin interfaceWebDriver- Returns:
- The URL of the page currently loaded in the browser
-
getScreenshotAs
Description copied from interface:TakesScreenshotCapture the screenshot and store it in the specified location.For a W3C-conformant WebDriver or WebElement, this behaves as stated in W3C WebDriver specification.
For a non-W3C-conformant WebDriver, this makes a best effort depending on the browser to return the following in order of preference:
- Entire page
- Current window
- Visible portion of the current frame
- The screenshot of the entire display containing the browser
- The entire content of the HTML element
- The visible portion of the HTML element
- Specified by:
getScreenshotAsin interfaceTakesScreenshot- Type Parameters:
X- Return type for getScreenshotAs.- Parameters:
outputType- target type, @see OutputType- Returns:
- Object in which is stored information about the screenshot.
- Throws:
WebDriverException- on failure.
-
print
- Specified by:
printin interfacePrintsPage- Throws:
WebDriverException
-
findElement
Description copied from interface:WebDriverFind the firstWebElementusing the given method. This method is affected by the 'implicit wait' times in force at the time of execution. The findElement(..) invocation will return a matching row, or try again repeatedly until the configured timeout is reached.findElement should not be used to look for non-present elements, use
WebDriver.findElements(By)and assert zero length response instead.See W3C WebDriver specification for more details.
- Specified by:
findElementin interfaceSearchContext- Specified by:
findElementin interfaceWebDriver- Parameters:
locator- The locating mechanism to use- Returns:
- The first matching element on the current page
- See Also:
-
findElements
Description copied from interface:WebDriverFind all elements within the current page using the given mechanism. This method is affected by the 'implicit wait' times in force at the time of execution. When implicitly waiting, this method will return as soon as there are more than 0 items in the found collection, or will return an empty list if the timeout is reached.See W3C WebDriver specification for more details.
- Specified by:
findElementsin interfaceSearchContext- Specified by:
findElementsin interfaceWebDriver- Parameters:
locator- The locating mechanism to use- Returns:
- A list of all matching
WebElements, or an empty list if nothing matches - See Also:
-
findElements
public List<WebElement> findElements(SearchContext context, BiFunction<String, Object, CommandPayload> findCommand, By locator) -
setFoundBy
-
getPageSource
Description copied from interface:WebDriverGet the source of the last loaded page. If the page has been modified after loading (for example, by Javascript) there is no guarantee that the returned text is that of the modified page. Please consult the documentation of the particular driver being used to determine whether the returned text reflects the current state of the page or the text last sent by the web server. The page source returned is a representation of the underlying DOM: do not expect it to be formatted or escaped in the same way as the response sent from the web server. Think of it as an artist's impression.See W3C WebDriver specification for more details.
- Specified by:
getPageSourcein interfaceWebDriver- Returns:
- The source of the current page
-
close
public void close()Description copied from interface:WebDriverClose the current window, quitting the browser if it's the last window currently open.See W3C WebDriver specification for more details.
-
quit
public void quit()Description copied from interface:WebDriverQuits this driver, closing every associated window. -
getWindowHandles
Description copied from interface:WebDriverReturn a set of window handles which can be used to iterate over all open windows of this WebDriver instance by passing them toWebDriver.switchTo().WebDriver.Options.window()See W3C WebDriver specification for more details.
- Specified by:
getWindowHandlesin interfaceWebDriver- Returns:
- A set of window handles which can be used to iterate over all open windows.
-
getWindowHandle
Description copied from interface:WebDriverReturn an opaque handle to this window that uniquely identifies it within this driver instance. This can be used to switch to this window at a later dateSee W3C WebDriver specification for more details.
- Specified by:
getWindowHandlein interfaceWebDriver- Returns:
- the current window handle
-
executeScript
Description copied from interface:JavascriptExecutorExecutes JavaScript in the context of the currently selected frame or window. The script fragment provided will be executed as the body of an anonymous function.Within the script, use
documentto refer to the current document. Note that local variables will not be available once the script has finished executing, though global variables will persist.If the script has a return value (i.e. if the script contains a
returnstatement), then the following steps will be taken:- For an HTML element, this method returns a WebElement
- For a decimal, a Double is returned
- For a non-decimal number, a Long is returned
- For a boolean, a Boolean is returned
- For all other cases, a String is returned.
- For an array, return a List<Object> with each object following the rules above. We support nested lists.
- For a map, return a Map<String, Object> with values following the rules above.
- Unless the value is null or there is no return value, in which null is returned
Arguments must be a number, a boolean, a String, WebElement, or a List of any combination of the above. An exception will be thrown if the arguments do not meet these criteria. The arguments will be made available to the JavaScript via the "arguments" magic variable, as if the function were called via "Function.apply"
- Specified by:
executeScriptin interfaceJavascriptExecutor- Parameters:
script- The JavaScript to executeargs- The arguments to the script. May be empty- Returns:
- One of Boolean, Long, Double, String, List, Map or WebElement. Or null.
-
executeAsyncScript
Description copied from interface:JavascriptExecutorExecute an asynchronous piece of JavaScript in the context of the currently selected frame or window. Unlike executingsynchronous JavaScript, scripts executed with this method must explicitly signal they are finished by invoking the provided callback. This callback is always injected into the executed function as the last argument.The first argument passed to the callback function will be used as the script's result. This value will be handled as follows:
- For an HTML element, this method returns a WebElement
- For a number, a Long is returned
- For a boolean, a Boolean is returned
- For all other cases, a String is returned.
- For an array, return a List<Object> with each object following the rules above. We support nested lists.
- For a map, return a Map<String, Object> with values following the rules above.
- Unless the value is null or there is no return value, in which null is returned
The default timeout for a script to be executed is 0ms. In most cases, including the examples below, one must set the script timeout
WebDriver.Timeouts.scriptTimeout(java.time.Duration)beforehand to a value sufficiently large enough.Example #1: Performing a sleep in the browser under test.
long start = System.currentTimeMillis(); ((JavascriptExecutor) driver).executeAsyncScript( "window.setTimeout(arguments[arguments.length - 1], 500);"); System.out.println( "Elapsed time: " + (System.currentTimeMillis() - start));Example #2: Synchronizing a test with an AJAX application:
WebElement composeButton = driver.findElement(By.id("compose-button")); composeButton.click(); ((JavascriptExecutor) driver).executeAsyncScript( "var callback = arguments[arguments.length - 1];" + "mailClient.getComposeWindowWidget().onload(callback);"); driver.switchTo().frame("composeWidget"); driver.findElement(By.id("to")).sendKeys("bog@example.com");Example #3: Injecting a XMLHttpRequest and waiting for the result:
Object response = ((JavascriptExecutor) driver).executeAsyncScript( "var callback = arguments[arguments.length - 1];" + "var xhr = new XMLHttpRequest();" + "xhr.open('GET', '/resource/data.json', true);" + "xhr.onreadystatechange = function() {" + " if (xhr.readyState == 4) {" + " callback(xhr.responseText);" + " }" + "};" + "xhr.send();"); JsonObject json = new JsonParser().parse((String) response); assertEquals("cheese", json.get("food").getAsString());Script arguments must be a number, a boolean, a String, WebElement, or a List of any combination of the above. An exception will be thrown if the arguments do not meet these criteria. The arguments will be made available to the JavaScript via the "arguments" variable.
- Specified by:
executeAsyncScriptin interfaceJavascriptExecutor- Parameters:
script- The JavaScript to execute.args- The arguments to the script. May be empty.- Returns:
- One of Boolean, Long, String, List, Map, WebElement, or null.
- See Also:
-
switchTo
Description copied from interface:WebDriverSend future commands to a different frame or window. -
manage
Description copied from interface:WebDriverGets the Option interface -
script
-
network
-
getElementConverter
-
setElementConverter
-
setLogLevel
Sets the RemoteWebDriver's client log level.- Parameters:
level- The log level to use.
-
execute
-
execute
-
execute
-
getExecuteMethod
-
perform
- Specified by:
performin interfaceInteractive
-
resetInputState
public void resetInputState()- Specified by:
resetInputStatein interfaceInteractive
-
addVirtualAuthenticator
Description copied from interface:HasVirtualAuthenticatorAdds a virtual authenticator with the given options.- Specified by:
addVirtualAuthenticatorin interfaceHasVirtualAuthenticator- Returns:
- the new virtual authenticator.
-
removeVirtualAuthenticator
Description copied from interface:HasVirtualAuthenticatorRemoves a previously added virtual authenticator. The authenticator is no longer valid after removal, so no methods may be called.- Specified by:
removeVirtualAuthenticatorin interfaceHasVirtualAuthenticator
-
isDownloadsEnabled
public boolean isDownloadsEnabled()Description copied from interface:HasDownloadsChecks if downloads are enabled- Specified by:
isDownloadsEnabledin interfaceHasDownloads- Returns:
- true if this webdriver has capability "se:downloadsEnabled" = true
-
getDownloadableFiles
Retrieves the names of the downloadable files.- Specified by:
getDownloadableFilesin interfaceHasDownloads- Returns:
- A list containing the names of the downloadable files.
- Throws:
WebDriverException- if capability to enable downloads is not set
-
downloadFile
Downloads a file from the specified location.- Specified by:
downloadFilein interfaceHasDownloads- Parameters:
fileName- the name of the file to downloadtargetLocation- the location where the file should be downloaded- Throws:
IOException- if an I/O error occurs during the file download
-
deleteDownloadableFiles
public void deleteDownloadableFiles()Deletes all downloadable files.- Specified by:
deleteDownloadableFilesin interfaceHasDownloads- Throws:
WebDriverException- capability to enable downloads must be set
-
setDelayEnabled
public void setDelayEnabled(boolean enabled) Description copied from interface:HasFederatedCredentialManagementDisables the promise rejection delay.FedCM by default delays promise resolution in failure cases for privacy reasons (https://w3c-fedid.github.io/FedCM/#ref-for-setdelayenabled); this function allows turning it off to let tests run faster where this is not relevant.
- Specified by:
setDelayEnabledin interfaceHasFederatedCredentialManagement
-
resetCooldown
public void resetCooldown()Description copied from interface:HasFederatedCredentialManagementResets the FedCM dialog cooldown.If a user agent triggers a cooldown when the account chooser is dismissed, this function resets that cooldown so that the dialog can be triggered again immediately.
- Specified by:
resetCooldownin interfaceHasFederatedCredentialManagement
-
getFederatedCredentialManagementDialog
Description copied from interface:HasFederatedCredentialManagementGets the currently open FedCM dialog, or null if there is no dialog.Can be used with WebDriverWait like: wait.until(driver -> ((HasFederatedCredentialManagement) driver). getFederatedCredentialManagementDialog() != null);
- Specified by:
getFederatedCredentialManagementDialogin interfaceHasFederatedCredentialManagement
-
log
protected void log(SessionId sessionId, String commandName, Object toLog, RemoteWebDriver.When when) Override this to be notified at key points in the execution of a command.- Parameters:
sessionId- the session id.commandName- the command that is being executed.toLog- any data that might be interesting.when- verb tense of "Execute" to prefix message
-
getFileDetector
-
setFileDetector
Set the file detector to be used when sending keyboard input. By default, this is set to a file detector that does nothing.- Parameters:
detector- The detector to use. Must not be null.- See Also:
-
toString
-