无法使用 Appium、Javascript 和 webdriverio 为元素调用 setValue
Cannot call setValue for element using Appium, Javascript and webdriverio
我正在使用 Appium、UIAutomator2、webdriverio 和 JavaScript 来测试虚拟设备上 运行 的应用程序。
我搜索一个元素并设置(或在本例中为清除)它的值。
使用 class 选择器效果很好。
const codeField = await driver.$("android.widget.EditText");
await codeField.clearValue();
但我想通过 id 查找元素,所以我有这个:
const codeField = await driver.findElement("id", "de.abcdef.ghijkl:id/activation_code_input");
await codeField.clearValue();
结果是:
webdriver: COMMAND findElement("id", "de.abcdef.ghijkl:id/activation_code_input")
webdriver: [POST] http://127.0.0.1:4723/wd/hub/session/f0a6844b-55e0-468d-b165-14cb219e55f7/element
webdriver: DATA {using: 'id', value: 'de.abcdef.ghijkl:id/activation_code_input'}
webdriver: RESULT {element-6066-11e4-a52e-4f735466cecf: '5d56ef1d-0036-4ecf-8b26-f060e290510b', ELEMENT: '5d56ef1d-0036-4ecf-8b26-f060e290510b'}
最后,什么时候应该设置字段的值
TypeError: codeField.clearValue is not a function
我错过了什么吗?
出于某种原因,当我使用 findElement("id", ...) 或 findElement("xpath", ...) 时,webdriverio 无法正确解析检索到的元素。因为我想通过 id resp 来处理元素。 resource-id 而不是 class,我可以通过使用 xpath 语法
传递 resource-id 来解决它
const codeField = await driver.$('//*[@resource-id="de.abcdef.ghijkl:id/activation_code_input"]');
我正在使用 Appium、UIAutomator2、webdriverio 和 JavaScript 来测试虚拟设备上 运行 的应用程序。
我搜索一个元素并设置(或在本例中为清除)它的值。
使用 class 选择器效果很好。
const codeField = await driver.$("android.widget.EditText");
await codeField.clearValue();
但我想通过 id 查找元素,所以我有这个:
const codeField = await driver.findElement("id", "de.abcdef.ghijkl:id/activation_code_input");
await codeField.clearValue();
结果是:
webdriver: COMMAND findElement("id", "de.abcdef.ghijkl:id/activation_code_input")
webdriver: [POST] http://127.0.0.1:4723/wd/hub/session/f0a6844b-55e0-468d-b165-14cb219e55f7/element
webdriver: DATA {using: 'id', value: 'de.abcdef.ghijkl:id/activation_code_input'}
webdriver: RESULT {element-6066-11e4-a52e-4f735466cecf: '5d56ef1d-0036-4ecf-8b26-f060e290510b', ELEMENT: '5d56ef1d-0036-4ecf-8b26-f060e290510b'}
最后,什么时候应该设置字段的值
TypeError: codeField.clearValue is not a function
我错过了什么吗?
出于某种原因,当我使用 findElement("id", ...) 或 findElement("xpath", ...) 时,webdriverio 无法正确解析检索到的元素。因为我想通过 id resp 来处理元素。 resource-id 而不是 class,我可以通过使用 xpath 语法
传递 resource-id 来解决它const codeField = await driver.$('//*[@resource-id="de.abcdef.ghijkl:id/activation_code_input"]');