$
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.
As of v10 this command is strict: if the selector resolves to more than one element it throws a
StrictSelectorError rather than silently returning the first match. Use $$ when you expect multiple
elements, pass { strict: false } to opt out for a single call, or set strictSelectors: false in your
config to opt out globally. See the Selectors guide for details.
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
await browser.$(selector, { strict })
Parameters
| Name | Type | Details |
|---|---|---|
selector | String, Function, Matcher | selector, JS Function, or Matcher object to fetch a certain element |
optionsoptional | Object | command options |
options.strictoptional | Boolean | throw if the selector matches more than one element (default: the strictSelectors config option, which defaults to true) |
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();
});
Returns
- <WebdriverIO.Element>