首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Appium (Webdriver.io)无法通过xpath找到元素

Appium (Webdriver.io)无法通过xpath找到元素
EN

Stack Overflow用户
提问于 2018-05-08 21:45:09
回答 2查看 1.2K关注 0票数 0

我是Appium的新手,所以可能会做错事=(

技术: TypeScript+Appium(wd.io)+Jasmine

但我一直坚持接收错误:

Jasmine日志:

代码语言:javascript
复制
An element could not be located on the page using the given search parameters ("//android.view.ViewGroup[@resource-id="com.app.dev.debug:id/toolbar"]//android.widget.TextView")

Appium日志:

代码语言:javascript
复制
[HTTP] --> POST /wd/hub/session/03ca8b58-7487-4ef6-9b81-8287a23c4a48/element {"using":"xpath","value":"//android.view.ViewGroup[@resource-id=\"com.app.dev.debug:id/toolbar\"]//android.widget.TextView"}
[debug] [MJSONWP] Calling AppiumDriver.findElement() with args: ["xpath","//android.view.ViewGroup[@resource-id=\"com.app.dev.debug:id/toolbar\"]//android.widget.TextView","03ca8b58-7487-4ef6-9b81-8287a23c4a48"]
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
[debug] [BaseDriver] Valid locator strategies for this request: xpath, id, class name, accessibility id, -android uiautomator
[debug] [BaseDriver] Waiting up to 0 ms for condition
[debug] [AndroidBootstrap] Sending command to android: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//android.view.ViewGroup[@resource-id=\"com.app.dev.debug:id/toolbar\"]//android.widget.TextView","context":"","multiple":false}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {"cmd":"action","action":"find","params":{"strategy":"xpath","selector":"//android.view.ViewGroup[@resource-id=\"com.app.dev.debug:id/toolbar\"]//android.widget.TextView","context":"","multiple":false}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: find
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding '//android.view.ViewGroup[@resource-id="com.app.dev.debug:id/toolbar"]//android.widget.TextView' using 'XPATH' with the contextId: '' multiple: false
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Failed to locate element. Clearing Accessibility cache and retrying.
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Finding '//android.view.ViewGroup[@resource-id="com.app.dev.debug:id/toolbar"]//android.widget.TextView' using 'XPATH' with the contextId: '' multiple: false
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {"status":7,"value":"No element found"}
[debug] [AndroidBootstrap] Received command result from bootstrap
[HTTP] <-- POST /wd/hub/session/03ca8b58-7487-4ef6-9b81-8287a23c4a48/element 500 232 ms - 164 

通过xpath查找元素时。

附加的元素树:

代码示例如下:

代码语言:javascript
复制
const deviceOptions: ServiceOptions = {
  desiredCapabilities: {
    platformName: 'android',
    app: './app-dev-debug.apk',
    appPackage: 'com.app.dev.debug',
    appActivity: 'com.app.dev.feature.start.StartActivity',
    avdReadyTimeout: 1000,
    udid: 'LGK350RGNBS4TS',
    deviceName: 'LG-K350',
    clearSystemFiles: true,
    newCommandTimeout: 120
  },
    host: 'localhost',
    port: 4723
  };
}

const driver = remote(deviceOptions);

const selector = '//android.view.ViewGroup[@resource-id="com.app.dev.debug:id/toolbar"]//android.widget.TextView';

it('test', () =>
  driver.init().element(selector).getText().then(text => expect(text).toBe('myText'))
);

这里出了什么问题?如何让它工作?

EN

回答 2

Stack Overflow用户

发布于 2018-05-08 22:51:00

在您的选择器中,您似乎没有提供应该使用哪个'By‘来查找元素。

请尝试以下方法

代码语言:javascript
复制
it('test', () =>
  driver.init().element(by.xpath(selector)).getText().then(text => 
expect(text).toBe('myText'))
);

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2018-05-09 14:17:01

找到解决方案:添加.waitForExist(selector)

代码语言:javascript
复制
it('test', () =>
  driver.init().waitForExist(selector).element(selector).getText().then(text => 
expect(text).toBe('myText'))
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50235173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档