org.scalatest.selenium

WebBrowser

trait WebBrowser extends AnyRef

Trait that provides a domain specific language (DSL) for writing browser-based tests using Selenium.

To use ScalaTest's Selenium DSL, mix trait WebBrowser into your test class. This trait provides the DSL in its entirety except for one missing piece: an implicit org.openqa.selenium.WebDriver. One way to provide the missing implicit driver is to declare one as a member of your test class, like this:

import org.scalatest._
import selenium._

class BlogSpec extends FlatSpec with ShouldMatchers with WebBrowser {
implicit val webDriver: WebDriver = new HtmlUnitDriver
"The blog app home page" should "have the correct title" in { go to (host + "index.html") pageTitle should be ("Awesome Blog") } }

For convenience, however, ScalaTest provides a WebBrowser subtrait containing an implicit WebDriver for each driver provided by Selenium. Thus a simpler way to use the HtmlUnit driver, for example, is to extend ScalaTest's HtmlUnit trait, like this:

import org.scalatest._
import selenium._

class BlogSpec extends FlatSpec with ShouldMatchers with HtmlUnit {
"The blog app home page" should "have the correct title" in { go to (host + "index.html") pageTitle should be ("Awesome Blog") } }

The web driver traits provided by ScalaTest are:

DriverWebBrowser subtrait
Google Chrome Chrome
Mozilla Firefox Firefox
HtmlUnit HtmlUnit
Microsoft Internet Explorer InternetExplorer
Apple Safari Safari

Navigation

You can ask the browser to retrieve a page (go to a URL) like this:

go to "http://www.artima.com"

Note: If you are using the page object pattern, you can also go to a page using the Page instance, as illustrated in the section on page objects below.

Once you have retrieved a page, you can fill in and submit forms, query for the values of page elements, and make assertions. In the following example, selenium will go to http://www.google.com, fill in the text box with Cheese!, press the submit button, and wait for result returned from an AJAX call:

go to "http://www.google.com"
click on "q"
enter("Cheese!")
submit()
// Google's search is rendered dynamically with JavaScript.
eventually { pageTitle should be ("Cheese! - Google Search") }

In the above example, the "q" used in “click on "q"” can be either the id or name of an element. ScalaTest's Selenium DSL will try to lookup by id first. If it cannot find any element with an id equal to "q", it will then try lookup by name "q".

Alternatively, you can be more specific:

click on id("q")   // to lookup by id "q" 
click on name("q") // to lookup by name "q" 

In addition to id and name, you can use the following approaches to lookup elements, just as you can do with Selenium's org.openqa.selenium.By class:

For example, you can select by link text with:

click on linkText("click here!")

If an element is not found via any form of lookup, evaluation will complete abruptly with a TestFailedException.

Getting and setting input element values

ScalaTest's Selenium DSL provides a clear, simple syntax for accessing and updating the values of input elements such as text fields, radio buttons, checkboxes, and selection lists. If a requested element is not found, or if it is found but is not of the requested type, an exception will immediately result causing the test to fail.

Text fields and text areas

You can change a text field's value by assigning it via the = operator, like this:

textField("q").value = "Cheese!"

And you can access a text field's value by simply invoking value on it:

textField("q").value should be ("Cheese!")

If the text field is empty, value will return an empty string ("").

You can use the same syntax with text areas by replacing textField with textArea, as in:

textArea("body").value = "I saw something cool today!"
textArea("body").value should be ("I saw something cool today!")

An alternate way to enter data into a text field or text area is to use enter or pressKeys. Although both of these send characters to the active element, pressKeys can be used on any kind of element, whereas enter can only be used on text fields and text areas. Another difference is that enter will clear the text field or area before sending the characters, effectively replacing any currently existing text with the new text passed to enter. By contrast, pressKeys does not do any clearing—it just appends more characters to any existing text. You can backup with pressKeys, however, by sending explicit backspace characters, "\u0008".

To use these commands, you must first click on the text field or area you are interested in to give it the focus. Here's an example:

click on "q"
enter("Cheese!")

Here's a (contrived) example of using pressKeys with backspace to fix a typo:

click on "q"              // q is the name or id of a text field or text area
enter("Cheesey!")         // Oops, meant to say Cheese!
pressKeys("\u0008\u0008") // Send two backspaces; now the value is Cheese
pressKeys("!")            // Send the missing exclamation point; now the value is Cheese!

Radio buttons

Radio buttons work together in groups. For example, you could have a group of radio buttons, like this:

<input type="radio" id="opt1" name="group1" value="Option 1"> Option 1</input>
<input type="radio" id="opt2" name="group1" value="Option 2"> Option 2</input>
<input type="radio" id="opt3" name="group1" value="Option 3"> Option 3</input>

You can select an option in either of two ways:

radioButtonGroup("group1").value = "Option 2"
radioButtonGroup("group1").selection = Some("Option 2")

Likewise, you can read the currently selected value of a group of radio buttons in two ways:

radioButtonGroup("group1").value should be ("Option 2")
radioButtonGroup("group1").selection should be (Some("Option 2"))

If the radio button has no selection at all, selection will return None whereas value will throw a TestFailedException. By using value, you are indicating you expect a selection, and if there isn't a selection that should result in a failed test.

If you would like to work with RadioButton element directly, you can select it by calling radioButton:

click on radioButton("opt1")

you can check if an option is selected by calling isSelected:

radioButton("opt1").isSelected should be (true)

to get the value of radio button, you can call value:

radioButton("opt1").value should be ("Option 1")

Checkboxes

A checkbox in one of two states: selected or cleared. Here's how you select a checkbox:

checkbox("cbx1").select()

And here's how you'd clear one:

checkbox("cbx1").clear()

You can access the current state of a checkbox with isSelected:

checkbox("cbx1").isSelected should be (true)

Single-selection dropdown lists

Given the following single-selection dropdown list:

<select id="select1">
 <option value="option1">Option 1</option>
 <option value="option2">Option 2</option>
 <option value="option3">Option 3</option>
</select>

You could select Option 2 in either of two ways:

singleSel("select1").value = "option2"
singleSel("select1").selection = Some("option2")

To clear the selection, either invoke clear or set selection to None:

singleSel.clear()
singleSel("select1").selection = None

You can read the currently selected value of a single-selection list in the same manner as radio buttons:

singleSel("select1").value should be ("option2")
singleSel("select1").selection should be (Some("option2"))

If the single-selection list has no selection at all, selection will return None whereas value will throw a TestFailedException. By using value, you are indicating you expect a selection, and if there isn't a selection that should result in a failed test.

Multiple-selection lists

Given the following multiple-selection list:

<select name="select2" multiple="multiple">
 <option value="option4">Option 4</option>
 <option value="option5">Option 5</option>
 <option value="option6">Option 6</option>
</select>

You could select Option 5 and Option 6 like this:

multiSel("select2").values = Seq("option5", "option6")

The previous command would essentially clear all selections first, then select Option 5 and Option 6. If instead you want to not clear any existing selection, just additionally select Option 5 and Option 6, you can use the += operator, like this.

multiSel("select2").values += "option5"
multiSel("select2").values += "option6"

To clear a specific option, pass its name to clear:

multiSel("select2").clear("option5")

To clear all selections, call clearAll:

multiSel("select2").clearAll()

You can access the current selections with values, which returns an immutable IndexedSeq[String]:

multiSel("select2").values should have size 2
multiSel("select2").values(0) should be ("option5")
multiSel("select2").values(1) should be ("option6")

Clicking and submitting

You can click on any element with “click on” as shown previously:

click on "aButton"
click on name("aTextField")

If the requested element is not found, click on will throw an exception, failing the test.

Clicking on a input element will give it the focus. If current focus is in on an input element within a form, you can submit the form by calling submit:

submit()

Switching

You can switch to a popup alert using the following code:

switch to alert

to switch to a frame, you could:

switch to frame(0) // switch by index
switch to frame("name") // switch by name

If you have reference to a window handle (can be obtained from calling windowHandle/windowHandles), you can switch to a particular window by:

switch to window(windowHandle)

You can also switch to active element and default content:

switch to activeElement
switch to defaultContent

Navigation history

In real web browser, you can press the 'Back' button to go back to previous page. To emulate that action in your test, you can call goBack:

goBack()

To emulate the 'Forward' button, you can call:

goForward()

And to refresh or reload the current page, you can call:

reloadPage()

Cookies!

To create a new cookie, you'll say:

add cookie ("cookie_name", "cookie_value")

to read a cookie value, you do:

cookie("cookie_name").value should be ("cookie_value") // If value is undefined, throws TFE right then and there. Never returns null.

In addition to the common use of name-value cookie, you can pass these extra fields when creating the cookie, available ways are:

cookie(name: String, value: String)
cookie(name: String, value: String, path: String)
cookie(name: String, value: String, path: String, expiry: Date)
cookie(name: String, value: String, path: String, expiry: Date, domain: String)
cookie(name: String, value: String, path: String, expiry: Date, domain: String, secure: Boolean)

and to read those extra fields:

cookie("cookie_name").value   // Read cookie's value
cookie("cookie_name").path    // Read cookie's path
cookie("cookie_name").expiry  // Read cookie's expiry
cookie("cookie_name").domain  // Read cookie's domain
cookie("cookie_name").isSecure  // Read cookie's isSecure flag

In order to delete a cookie, you could use the following code:

delete cookie "cookie_name"

or to delete all cookies in the same domain:-

delete all cookies

To get the underlying Selenium cookie, you can use underlying:

cookie("cookie_name").underlying.validate()  // call the validate() method on underlying Selenium cookie

Other useful element properties

All element types (textField, textArea, radioButton, checkbox, singleSel, multiSel) support the following useful properties:

MethodDescription
location The XY location of the top-left corner of this Element.
size The width/height size of this Element.
isDisplayed Indicates whether this Element is displayed.
isEnabled Indicates whether this Element is enabled.
isSelected Indicates whether this Element is selected.
tagName The tag name of this element.
underlying The underlying WebElement wrapped by this Element.
attribute(name: String) The attribute value of the given attribute name of this element, wrapped in a Some, or None if no such attribute exists on this Element.
text Returns the visible (i.e., not hidden by CSS) text of this element, including sub-elements, without any leading or trailing whitespace.

Implicit wait

To set Selenium's implicit wait timeout, you can call the implicitlyWait method:

implicitlyWait(Span(10, Seconds))

Invoking this method sets the amount of time the driver will wait when searching for an element that is not immediately present. For more information, see the documentation for method implicitlyWait.

Page source and current URL

It is possible to get the html source of currently loaded page, using:

pageSource

and if needed, get the current URL of currently loaded page:

currentUrl

Screen capture

You can capture screen using the following code:

val file = capture

By default, the captured image file will be saved in temporary folder (returned by java.io.tmpdir property), with random file name ends with .png extension. You can specify a fixed file name:

capture to "MyScreenShot.png"

or

capture to "MyScreenShot"

Both will result in a same file name MyScreenShot.png.

You can also change the target folder screenshot file is written to, by saying:

setCaptureDir("/home/your_name/screenshots")

If you want to capture a screenshot when something goes wrong (e.g. test failed), you can use withScreenshot:

withScreenshot {
  assert("Gold" == "Silver", "Expected gold, but got silver")
}

In case the test code fails, you'll see the screenshot location appended to the error message, for example:

Expected gold but got silver; screenshot capture in /tmp/AbCdEfGhIj.png

Using the page object pattern

If you use the page object pattern, mixing trait Page into your page classes will allow you to use the go to syntax with your page objects. Here's an example:

class HomePage extends Page {
  val url = "http://localhost:9000/index.html"
}

val homePage = new HomePage go to homePage

Executing JavaScript

To execute arbitrary JavaScript, for example, to test some JavaScript functions on your page, pass it to executeScript:

go to (host + "index.html")
val result1 = executeScript("return document.title;")
result1 should be ("Test Title")
val result2 = executeScript("return 'Hello ' + arguments[0]", "ScalaTest")
result2 should be ("Hello ScalaTest")

To execute an asynchronous bit of JavaScript, pass it to executeAsyncScript. You can set the script timeout with setScriptTimeout:

val script = """
  var callback = arguments[arguments.length - 1];
  window.setTimeout(function() {callback('Hello ScalaTest')}, 500);
"""
setScriptTimeout(1 second)
val result = executeAsyncScript(script)
result should be ("Hello ScalaTest")

Querying for elements

You can query for arbitrary elements via find and findAll. The find method returns the first matching element, wrapped in a Some, or None if no element is found. The findAll method returns an immutable IndexedSeq of all matching elements. If no elements match the query, findAll returns an empty IndexedSeq. These methods allow you to perform rich queries using for expressions. Here are some examples:

val ele: Option[Element] = find("q")

val eles: colection.immutable.IndexedSeq[Element] = findAll(className("small")) for (e <- eles; if e.tagName != "input") e should be ('displayed) val textFields = eles filter { tf.isInstanceOf[TextField] }

Cleaning up

To close the current browser window, and exit the driver if the current window was the only one remaining, use close:

close()

To close all windows, and exit the driver, use quit:

quit()

Alternate forms

Although statements like “delete all cookies” fit well with matcher statements like “title should be ("Cheese!")”, they do not fit as well with the simple method call form of assertions. If you prefer, you can avoid operator notation and instead use alternatives that take the form of plain-old method calls. Here's an example:

goTo("http://www.google.com")
clickOn("q")
textField("q").value = "Cheese!"
submit()
// Google's search is rendered dynamically with JavaScript.
eventually(assert(pageTitle === "Cheese! - Google Search"))

Here's a table showing the complete list of alternatives:

operator notationmethod call
go to (host + "index.html") goTo(host + "index.html")
click on "aButton" clickOn("aButton")
switch to activeElement switchTo(activeElement)
add cookie ("cookie_name", "cookie_value") addCookie("cookie_name", "cookie_value")
delete cookie "cookie_name" deleteCookie("cookie_name")
delete all cookies deleteAllCookies()
capture to "MyScreenShot" captureTo("MyScreenShot")

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. WebBrowser
  2. AnyRef
  3. Any
Visibility
  1. Public
  2. All

Type Members

  1. class ActiveElementTarget extends SwitchTarget[Element]

    This class supports switching to the currently active element in ScalaTest's Selenium DSL.

  2. class AlertTarget extends SwitchTarget[Alert]

    This class supports switching to the alert box in ScalaTest's Selenium DSL.

  3. class Checkbox extends Element

    This class is part of ScalaTest's Selenium DSL.

  4. case class ClassNameQuery (queryString: String) extends Query with Product with Serializable

    A class name query.

  5. class CookiesNoun extends AnyRef

    This class is part of the ScalaTest's Selenium DSL.

  6. case class CssSelectorQuery (queryString: String) extends Query with Product with Serializable

    A CSS selector query.

  7. class DefaultContentTarget extends SwitchTarget[WebDriver]

    This class supports switching to the default content in ScalaTest's Selenium DSL.

  8. case class Dimension (width: Int, height: Int) extends Product with Serializable

    A dimension containing the width and height of a screen element.

  9. trait Element extends AnyRef

    Wrapper class for a Selenium WebElement.

  10. class FrameElementTarget extends SwitchTarget[WebDriver]

    This class supports switching to a frame by element in ScalaTest's Selenium DSL.

  11. class FrameIndexTarget extends SwitchTarget[WebDriver]

    This class supports switching to a frame by index in ScalaTest's Selenium DSL.

  12. class FrameNameOrIdTarget extends SwitchTarget[WebDriver]

    This class supports switching to a frame by name or ID in ScalaTest's Selenium DSL.

  13. class FrameWebElementTarget extends SwitchTarget[WebDriver]

    This class supports switching to a frame by web element in ScalaTest's Selenium DSL.

  14. case class IdQuery (queryString: String) extends Query with Product with Serializable

    An ID query.

  15. case class LinkTextQuery (queryString: String) extends Query with Product with Serializable

    A link text query.

  16. class MultiSel extends Element

    This class is part of ScalaTest's Selenium DSL.

  17. class MultiSelOptionSeq extends IndexedSeq[String]

    This class is part of ScalaTest's Selenium DSL.

  18. case class NameQuery (queryString: String) extends Query with Product with Serializable

    A name query.

  19. trait Page extends AnyRef

    Trait that facilitates using the page object pattern with the ScalaTest Selenium DSL.

  20. case class PartialLinkTextQuery (queryString: String) extends Query with Product with Serializable

    A partial link text query.

  21. case class Point (x: Int, y: Int) extends Product with Serializable

    A point containing an XY screen location.

  22. trait Query extends AnyRef

    This trait is part of ScalaTest's Selenium DSL.

  23. class RadioButton extends Element

    This class is part of ScalaTest's Selenium DSL.

  24. class RadioButtonGroup extends AnyRef

    This class is part of ScalaTest's Selenium DSL.

  25. class SingleSel extends Element

    This class is part of ScalaTest's Selenium DSL.

  26. class SwitchTarget [T] extends AnyRef

    This sealed abstract class supports switching in ScalaTest's Selenium DSL.

  27. case class TagNameQuery (queryString: String) extends Query with Product with Serializable

    A tag name query.

  28. class TextArea extends Element

    This class is part of ScalaTest's Selenium DSL.

  29. class TextField extends Element

    This class is part of ScalaTest's Selenium DSL.

  30. class WindowTarget extends SwitchTarget[WebDriver]

    This class supports switching to a window by name or handle in ScalaTest's Selenium DSL.

  31. class WrappedCookie extends AnyRef

    Wrapper class for a Selenium Cookie.

  32. case class XPathQuery (queryString: String) extends Query with Product with Serializable

    An XPath query.

Value Members

  1. def != (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  2. def != (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  3. def ## (): Int

    Attributes
    final
    Definition Classes
    AnyRef → Any
  4. def == (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  5. def == (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  6. val activeElement : ActiveElementTarget

    This value supports switching to the currently active element in ScalaTest's Selenium DSL.

    This value supports switching to the currently active element in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to activeElement
              ^
    

  7. object add extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  8. def addCookie (name: String, value: String, path: String = "/", expiry: Date = null, domain: String = null, secure: Boolean = false)(implicit driver: WebDriver): Unit

    Add cookie in the web browser.

    Add cookie in the web browser. If the cookie's domain name is left blank (default), it is assumed that the cookie is meant for the domain of the current document.

    name

    cookie's name

    value

    cookie's value

    path

    cookie's path

    expiry

    cookie's expiry data

    domain

    cookie's domain name

    secure

    whether this cookie is secured.

    driver

    the WebDriver with which to drive the browser

  9. val alert : AlertTarget

    This value supports switching to the alert box in ScalaTest's Selenium DSL.

    This value supports switching to the alert box in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to alert
              ^
    

  10. def asInstanceOf [T0] : T0

    Attributes
    final
    Definition Classes
    Any
  11. object capture extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  12. def captureTo (fileName: String)(implicit driver: WebDriver): Unit

    Capture screenshot and save it as the specified name (if file name does not end with .

    Capture screenshot and save it as the specified name (if file name does not end with .png, it will be extended automatically) in capture directory, which by default is system property's java.io.tmpdir. You can change capture directory by calling setCaptureDir

    fileName

    screenshot file name, if does not end with .png, it will be extended automatically

  13. def checkbox (queryString: String)(implicit driver: WebDriver): Checkbox

    Finds and returns the first Checkbox selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a Checkbox.

    Finds and returns the first Checkbox selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a Checkbox.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the Checkbox selected by this query

  14. def checkbox (query: Query)(implicit driver: WebDriver): Checkbox

    Finds and returns the first Checkbox selected by the specified Query, throws TestFailedException if element not found or the found element is not a Checkbox.

    Finds and returns the first Checkbox selected by the specified Query, throws TestFailedException if element not found or the found element is not a Checkbox.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the Checkbox selected by this query

  15. def className (className: String): ClassNameQuery

    Returns a class name query.

    Returns a class name query.

    This method enables syntax such as the following:

    click on className("???")
             ^
    

  16. object click extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  17. def clickOn (element: Element): Unit

    Click on the specified Element

    Click on the specified Element

    element

    the Element to click on

  18. def clickOn (queryString: String)(implicit driver: WebDriver): Unit

    Click on the first Element selected by the specified string ID or name

    Click on the first Element selected by the specified string ID or name

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

  19. def clickOn (query: Query)(implicit driver: WebDriver): Unit

    Click on the first Element selected by the specified Query

    Click on the first Element selected by the specified Query

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

  20. def clickOn (element: WebElement): Unit

    Click on the specified WebElement

    Click on the specified WebElement

    element

    the WebElement to click on

  21. def clone (): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  22. def close ()(implicit driver: WebDriver): Unit

    Closes the current browser window, and exits the driver if the current window was the only one remaining.

    Closes the current browser window, and exits the driver if the current window was the only one remaining.

    driver

    the WebDriver with which to drive the browser

  23. def cookie (name: String)(implicit driver: WebDriver): WrappedCookie

    Get a saved cookie from web browser, throws TestFailedException if the cookie does not exist.

    Get a saved cookie from web browser, throws TestFailedException if the cookie does not exist.

    name

    cookie's name

    returns

    a WrappedCookie instance

  24. val cookies : CookiesNoun

    This field supports cookie deletion in ScalaTest's Selenium DSL.

    This field supports cookie deletion in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This field enables the following syntax:

    delete all cookies
               ^
    

  25. def cssSelector (cssSelector: String): CssSelectorQuery

    Returns a CSS selector query.

    Returns a CSS selector query.

    This method enables syntax such as the following:

    click on cssSelector("???")
             ^
    

  26. def currentUrl (implicit driver: WebDriver): String

    Returns the URL of the current page.

    Returns the URL of the current page.

    This method invokes getCurrentUrl on the passed WebDriver and returns the result.

    driver

    the WebDriver with which to drive the browser

    returns

    the URL of the current page

  27. val defaultContent : DefaultContentTarget

    This value supports switching to the default content in ScalaTest's Selenium DSL.

    This value supports switching to the default content in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to defaultContent
              ^
    

  28. object delete extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  29. def deleteAllCookies ()(implicit driver: WebDriver): Unit

    Delete all cookies in the current domain from web browser.

    Delete all cookies in the current domain from web browser.

    driver

    the WebDriver with which to drive the browser

  30. def deleteCookie (name: String)(implicit driver: WebDriver): Unit

    Delete cookie with the specified name from web browser, throws TestFailedException if the specified cookie does not exists.

    Delete cookie with the specified name from web browser, throws TestFailedException if the specified cookie does not exists.

    name

    cookie's name

    driver

    the WebDriver with which to drive the browser

  31. def enter (value: String)(implicit driver: WebDriver): Unit

    Clears the current active TextField or TextArea, and presses the passed keys.

    Clears the current active TextField or TextArea, and presses the passed keys. Throws TestFailedException if current active is not TextField or TextArea.

    value

    keys to press in current active TextField or TextArea

  32. def eq (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  33. def equals (arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  34. def executeAsyncScript (script: String, args: AnyRef*)(implicit driver: WebDriver): AnyRef

    Executes an asynchronous piece of JavaScript in the context of the currently selected frame or window.

    Executes an asynchronous piece of JavaScript in the context of the currently selected frame or window. Unlike executing synchronous 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
    • Unless the value is null or there is no return value, in which null is returned

    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.

    script

    the JavaScript to execute

    args

    the arguments to the script, may be empty

    returns

    One of Boolean, Long, String, List, WebElement, or null

  35. def executeScript [T] (script: String, args: AnyRef*)(implicit driver: WebDriver): AnyRef

    Executes JavaScript in the context of the currently selected frame or window.

    Executes 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, you can use document to refer to the current document. Local variables will not be available once the script has finished executing, but global variables will.

    To return a value (e.g. if the script contains a return statement), 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
    • Unless the value is null or there is no return value, in which null is returned
    script

    the JavaScript to execute

    args

    the arguments to the script, may be empty

    returns

    One of Boolean, Long, String, List or WebElement. Or null

  36. def finalize (): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  37. def find (queryString: String)(implicit driver: WebDriver): Option[Element]

    Finds and returns the first element selected by the specified string ID or name, wrapped in a Some, or None if no element is selected.

    Finds and returns the first element selected by the specified string ID or name, wrapped in a Some, or None if no element is selected. YYY

    This method will try to lookup by id first. If it cannot find any element with an id equal to the specified queryString, it will then try lookup by name.

    The class of the Element returned will be a subtype of Element if appropriate. For example, if the query selects a text field, the class of the returned Element will be TextField.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the Element selected by this query, wrapped in a Some, or None if no Element is selected

  38. def find (query: Query)(implicit driver: WebDriver): Option[Element]

    Finds and returns the first element selected by the specified Query, wrapped in a Some, or None if no element is selected.

    Finds and returns the first element selected by the specified Query, wrapped in a Some, or None if no element is selected.

    The class of the Element returned will be a subtype of Element if appropriate. For example, if the query selects a text field, the class of the returned Element will be TextField.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the Element selected by this query, wrapped in a Some, or None if no Element is selected

  39. def findAll (queryString: String)(implicit driver: WebDriver): Iterator[Element]

    Returns an Iterator over all Elements selected by the specified string ID or name

    Returns an Iterator over all Elements selected by the specified string ID or name

    This method will try to lookup by id first. If it cannot find any element with an id equal to the specified queryString, it will then try lookup by name.

    The class of the Element returned will be a subtype of Element if appropriate. For example, if the query selects a text field, the class of the returned Element will be TextField.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the Iterator over all Elements selected by this query

  40. def findAll (query: Query)(implicit driver: WebDriver): Iterator[Element]

    Returns an Iterator over all Elements selected by this query.

    Returns an Iterator over all Elements selected by this query.

    The class of the Elements produced by the returned Iterator will be a subtypes of Element if appropriate. For example, if an Elementrepresenting a text field is returned by the Iterator, the class of the returned Element will be TextField.

    If no Elements are selected by this query, this method will return an empty Iterator will be returned.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the Iterator over all Elements selected by this query

  41. def frame (query: Query)(implicit driver: WebDriver): FrameWebElementTarget

    This method supports switching to a frame by Query in ScalaTest's Selenium DSL.

    This method supports switching to a frame by Query in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    query

    Query used to select WebElement which is contained in the frame to switch to

    returns

    a FrameWebElementTarget instance

  42. def frame (element: Element): FrameElementTarget

    This method supports switching to a frame by element in ScalaTest's Selenium DSL.

    This method supports switching to a frame by element in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    element

    Element which is contained in the frame to switch to

    returns

    a FrameElementTarget instance

  43. def frame (element: WebElement): FrameWebElementTarget

    This method supports switching to a frame by web element in ScalaTest's Selenium DSL.

    This method supports switching to a frame by web element in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    element

    WebElement which is contained in the frame to switch to

    returns

    a FrameWebElementTarget instance

  44. def frame (nameOrId: String): FrameNameOrIdTarget

    This method supports switching to a frame by name or ID in ScalaTest's Selenium DSL.

    This method supports switching to a frame by name or ID in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to frame("name")
              ^
    

    nameOrId

    name or ID of the frame to switch to

    returns

    a FrameNameOrIdTarget instance

  45. def frame (index: Int): FrameIndexTarget

    This method supports switching to a frame by index in ScalaTest's Selenium DSL.

    This method supports switching to a frame by index in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to frame(0)
              ^
    

    index

    the index of frame to switch to

    returns

    a FrameIndexTarget instance

  46. def getClass (): java.lang.Class[_]

    Attributes
    final
    Definition Classes
    AnyRef
  47. object go extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  48. def goBack ()(implicit driver: WebDriver): Unit

    Go back to previous page.

    Go back to previous page.

    driver

    the WebDriver with which to drive the browser

  49. def goForward ()(implicit driver: WebDriver): Unit

    Go forward to next page.

    Go forward to next page.

    driver

    the WebDriver with which to drive the browser

  50. def goTo (page: Page)(implicit driver: WebDriver): Unit

    Sends the browser to the URL contained in the passed Page object.

    Sends the browser to the URL contained in the passed Page object.

    Here's an example:

    goTo(homePage)
    

    page

    the Page object containing the URL to which to send the browser

    driver

    the WebDriver with which to drive the browser

  51. def goTo (url: String)(implicit driver: WebDriver): Unit

    Sends the browser to the passed URL.

    Sends the browser to the passed URL.

    Here's an example:

    goTo("http://www.artima.com")
    

    url

    the URL to which to send the browser

    driver

    the WebDriver with which to drive the browser

  52. def hashCode (): Int

    Definition Classes
    AnyRef → Any
  53. def id (elementId: String): IdQuery

    Returns an ID query.

    Returns an ID query.

    This method enables syntax such as the following:

    click on id("q")
             ^
    

  54. def implicitlyWait (timeout: Span)(implicit driver: WebDriver): Unit

    Sets the amount of time the driver should wait when searching for an element that is not immediately present.

    Sets the amount of time the driver should wait when searching for an element that is not immediately present.

    When searching for requested elements, Selenium will poll the page until the requested element (or at least one of multiple requested elements) is found or this "implicit wait" timeout has expired. If the timeout expires, Selenium will throw NoSuchElementException, which ScalaTest's Selenium DSL will wrap in a TestFailedException.

    You can alternatively set this timeout to zero and use ScalaTest's eventually construct.

    This method invokes manage.timeouts.implicitlyWait on the passed WebDriver. See the documentation of Selenium's WebDriver#Timeouts interface for more information.

    timeout

    the time span to implicitly wait

    driver

    the WebDriver on which to set the implicit wait

  55. def isInstanceOf [T0] : Boolean

    Attributes
    final
    Definition Classes
    Any
  56. def isScreenshotSupported (implicit driver: WebDriver): Boolean

    Check if screenshot is supported

    Check if screenshot is supported

    driver

    the WebDriver with which to drive the browser

    returns

    true if screenshot is supported, false otherwise

  57. def linkText (linkText: String): LinkTextQuery

    Returns a link text query.

    Returns a link text query.

    This method enables syntax such as the following:

    click on linkText("???")
             ^
    

  58. def multiSel (queryString: String)(implicit driver: WebDriver): MultiSel

    Finds and returns the first MultiSel selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a MultiSel.

    Finds and returns the first MultiSel selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a MultiSel.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the MultiSel selected by this query

  59. def multiSel (query: Query)(implicit driver: WebDriver): MultiSel

    Finds and returns the first MultiSel selected by the specified Query, throws TestFailedException if element not found or the found element is not a MultiSel.

    Finds and returns the first MultiSel selected by the specified Query, throws TestFailedException if element not found or the found element is not a MultiSel.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the MultiSel selected by this query

  60. def name (elementName: String): NameQuery

    Returns a name query.

    Returns a name query.

    This method enables syntax such as the following:

    click on name("q")
             ^
    

  61. def ne (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  62. def notify (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  63. def notifyAll (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  64. def pageSource (implicit driver: WebDriver): String

    Returns the source of the current page.

    Returns the source of the current page.

    This method invokes getPageSource on the passed WebDriver and returns the result.

    driver

    the WebDriver with which to drive the browser

    returns

    the source of the current page

  65. def pageTitle (implicit driver: WebDriver): String

    Returns the title of the current page, or the empty string if the current page has no title.

    Returns the title of the current page, or the empty string if the current page has no title.

    driver

    the WebDriver with which to drive the browser

    returns

    the current page's title, or the empty string if the current page has no title

  66. def partialLinkText (partialLinkText: String): PartialLinkTextQuery

    Returns a partial link text query.

    Returns a partial link text query.

    This method enables syntax such as the following:

    click on partialLinkText("???")
             ^
    

  67. def pressKeys (value: String)(implicit driver: WebDriver): Unit

    Press the passed keys to current active element.

    Press the passed keys to current active element.

    value

    keys to press in current active element

  68. def quit ()(implicit driver: WebDriver): Unit

    Close all windows, and exit the driver.

    Close all windows, and exit the driver.

    driver

    the WebDriver on which to quit.

  69. def radioButton (queryString: String)(implicit driver: WebDriver): RadioButton

    Finds and returns the first RadioButton selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a RadioButton.

    Finds and returns the first RadioButton selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a RadioButton.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the RadioButton selected by this query

  70. def radioButton (query: Query)(implicit driver: WebDriver): RadioButton

    Finds and returns the first RadioButton selected by the specified Query, throws TestFailedException if element not found or the found element is not a RadioButton.

    Finds and returns the first RadioButton selected by the specified Query, throws TestFailedException if element not found or the found element is not a RadioButton.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the RadioButton selected by this query

  71. def radioButtonGroup (groupName: String)(implicit driver: WebDriver): RadioButtonGroup

    Finds and returns RadioButtonGroup selected by the specified group name, throws TestFailedException if no element with the specified group name is found, or found any element with the specified group name but not a RadioButton

    Finds and returns RadioButtonGroup selected by the specified group name, throws TestFailedException if no element with the specified group name is found, or found any element with the specified group name but not a RadioButton

    groupName

    the group name with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the RadioButtonGroup selected by this query

  72. def reloadPage ()(implicit driver: WebDriver): Unit

    Reload the current page.

    Reload the current page.

    driver

    the WebDriver with which to drive the browser

  73. def setCaptureDir (targetDirPath: String): Unit

    Set capture directory.

    Set capture directory.

    targetDirPath

    the path of capture directory

  74. def setScriptTimeout (timeout: Span)(implicit driver: WebDriver): Unit

    Sets the amount of time to wait for an asynchronous script to finish execution before throwing an exception.

    Sets the amount of time to wait for an asynchronous script to finish execution before throwing an exception.

    timeout

    the amount of time to wait for an asynchronous script to finish execution before throwing exception

  75. def singleSel (queryString: String)(implicit driver: WebDriver): SingleSel

    Finds and returns the first SingleSel selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a SingleSel.

    Finds and returns the first SingleSel selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a SingleSel.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the SingleSel selected by this query

  76. def singleSel (query: Query)(implicit driver: WebDriver): SingleSel

    Finds and returns the first SingleSel selected by the specified Query, throws TestFailedException if element not found or the found element is not a SingleSel.

    Finds and returns the first SingleSel selected by the specified Query, throws TestFailedException if element not found or the found element is not a SingleSel.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the SingleSel selected by this query

  77. def submit ()(implicit driver: WebDriver): Unit

    Submit the form where current active element belongs to, and throws TestFailedException if current active element is not in a form or underlying WebDriver encounters problem when submitting the form.

    Submit the form where current active element belongs to, and throws TestFailedException if current active element is not in a form or underlying WebDriver encounters problem when submitting the form. If this causes the current page to change, this call will block until the new page is loaded.

    driver

    the WebDriver with which to drive the browser

  78. object switch extends AnyRef

    This object is part of ScalaTest's Selenium DSL.

  79. def switchTo [T] (target: SwitchTarget[T])(implicit driver: WebDriver): T

    Switch to the specified SwitchTarget

    Switch to the specified SwitchTarget

    target

    the SwitchTarget to switch to

    driver

    the WebDriver with which to drive the browser

    returns

    instance of specified SwitchTarget's type parameter

  80. def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
    final
    Definition Classes
    AnyRef
  81. def tagName (tagName: String): TagNameQuery

    Returns a tag name query.

    Returns a tag name query.

    This method enables syntax such as the following:

    click on tagName("???")
             ^
    

  82. def textArea (queryString: String)(implicit driver: WebDriver): TextArea

    Finds and returns the first TextArea selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a TextArea.

    Finds and returns the first TextArea selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a TextArea.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the TextArea selected by this query

  83. def textArea (query: Query)(implicit driver: WebDriver): TextArea

    Finds and returns the first TextArea selected by the specified Query, throws TestFailedException if element not found or the found element is not a TextArea.

    Finds and returns the first TextArea selected by the specified Query, throws TestFailedException if element not found or the found element is not a TextArea.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the TextArea selected by this query

  84. def textField (queryString: String)(implicit driver: WebDriver): TextField

    Finds and returns the first TextField selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a TextField.

    Finds and returns the first TextField selected by the specified string ID or name, throws TestFailedException if element not found or the found element is not a TextField.

    queryString

    the string with which to search, first by ID then by name

    driver

    the WebDriver with which to drive the browser

    returns

    the TextField selected by this query

  85. def textField (query: Query)(implicit driver: WebDriver): TextField

    Finds and returns the first TextField selected by the specified Query, throws TestFailedException if element not found or the found element is not a TextField.

    Finds and returns the first TextField selected by the specified Query, throws TestFailedException if element not found or the found element is not a TextField.

    query

    the Query with which to search

    driver

    the WebDriver with which to drive the browser

    returns

    the TextField selected by this query

  86. def toString (): String

    Definition Classes
    AnyRef → Any
  87. def wait (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  88. def wait (arg0: Long, arg1: Int): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  89. def wait (arg0: Long): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  90. def window (nameOrHandle: String): WindowTarget

    This class supports switching to a window by name or handle in ScalaTest's Selenium DSL.

    This class supports switching to a window by name or handle in ScalaTest's Selenium DSL. Please see the documentation for WebBrowser for an overview of the Selenium DSL.

    This class is enables the following syntax:

    switch to window(windowHandle)
              ^
    

    nameOrHandle

    name or window handle of the window to switch to

    returns

    a WindowTarget instance

  91. def windowHandle (implicit driver: WebDriver): String

    Get an opaque handle to current active window that uniquely identifies it within the implicit driver instance.

    Get an opaque handle to current active window that uniquely identifies it within the implicit driver instance.

    driver

    the WebDriver with which to drive the browser

  92. def windowHandles (implicit driver: WebDriver): Set[String]

    Get a set of window handles which can be used to iterate over all open windows

    Get a set of window handles which can be used to iterate over all open windows

    driver

    the WebDriver with which to drive the browser

  93. def withScreenshot (fun: ⇒ Unit)(implicit driver: WebDriver): Unit

    Execute the given function, if ModifiableMessage exception is thrown from the given function, a screenshot will be captured automatically into capture directory, which by default is system property's java.

    Execute the given function, if ModifiableMessage exception is thrown from the given function, a screenshot will be captured automatically into capture directory, which by default is system property's java.io.tmpdir. You can change capture directory by calling setCaptureDir

    fun

    function to execute

  94. def xpath (xpath: String): XPathQuery

    Returns an XPath query.

    Returns an XPath query.

    This method enables syntax such as the following:

    click on xpath("???")
             ^
    

  95. def title (implicit driver: WebDriver): String

    Annotations
    @deprecated
    Deprecated

    The title method will be removed in the next 2.0 milestone release. Please use pageTitle instead.

  96. def wait [T] (timeout: Span, interval: Span = Span(500L, Milliseconds))(f: ⇒ T)(implicit driver: WebDriver): T

    Annotations
    @deprecated
    Deprecated

    The wait method will be removed in the next 2.0 milestone release. Please use eventually instead.

Inherited from AnyRef

Inherited from Any