appium-uiautomator2-driver
Version:
UiAutomator2 integration for Appium
22 lines • 1.24 kB
JavaScript
import { cssToNativeLocator } from '../css/index.js';
// we override the xpath search for this first-visible-child selector, which
// looks like /*[@firstVisible="true"]
const MAGIC_FIRST_VIS_CHILD_SEL = /\/\*\[@firstVisible ?= ?('|")true\1\]/;
const MAGIC_SCROLLABLE_SEL = /\/\/\*\[@scrollable ?= ?('|")true\1\]/;
const MAGIC_SCROLLABLE_BY = 'new UiSelector().scrollable(true)';
export async function doFindElementOrEls(params) {
const uiautomator2 = this.uiautomator2;
if (params.strategy === 'xpath' && MAGIC_FIRST_VIS_CHILD_SEL.test(params.selector)) {
const elementId = params.context;
return (await uiautomator2.jwproxy.command(`/appium/element/${elementId}/first_visible`, 'GET', {}));
}
if (params.strategy === 'xpath' && MAGIC_SCROLLABLE_SEL.test(params.selector)) {
params.strategy = '-android uiautomator';
params.selector = MAGIC_SCROLLABLE_BY;
}
if (params.strategy === 'css selector') {
({ strategy: params.strategy, selector: params.selector } = await cssToNativeLocator(params.selector, this.opts.appPackage));
}
return (await uiautomator2.jwproxy.command(`/element${params.multiple ? 's' : ''}`, 'POST', params));
}
//# sourceMappingURL=find.js.map