$
The $
command is a short and handy way in order to fetch a single element on the page.
You can also pass in an object as selector where the object contains a property element-6066-11e4-a52e-4f735466cecf
with the value of a reference to an element. The command will then transform the reference to an extended WebdriverIO element.
Note: chaining $
and $$
commands only make sense when you use multiple selector strategies. You will otherwise
make unnecessary requests that slow down the test (e.g. $('body').$('div')
will trigger two request whereas
$('body div')
does literally the same with just one request)
Note: only use these element objects if you are certain they still exist on the
page, e.g. using the isExisting
command. WebdriverIO is unable to refetch them given
that there are no selector information available.
Using the wdio testrunner this command is a global variable, see Globals
for more information. Using WebdriverIO within a standalone
script it will be located on the browser object instead (e.g. browser.$$
).
You can chain $
or $$
together without wrapping individual commands into await
in order
to walk down the DOM tree, e.g.:
const imageSrc = await $$('div')[1].nextElement().$$('img')[2].getAttribute('src')
For more information on how to select specific elements, check out the Selectors guide.
Usage
browser.$(selector)
Parameters
Name | Type | Details |
---|---|---|
selector | String , Function , Matcher | selector, JS Function, or Matcher object to fetch a certain element |
Examples
loading...
loading...
loading...
loading...
it('should use Androids DataMatcher or ViewMatcher selector', async () => {
const menuItem = await $({
"name": "hasEntry",
"args": ["title", "ViewTitle"],
"class": "androidx.test.espresso.matcher.ViewMatchers"
});
await menuItem.click();
const menuItem = await $({
"name": "hasEntry",
"args": ["title", "ViewTitle"]
});
await menuItem.click();
});