Appium appium 是否可以通过 content-desc 的值来识别元素呢

ceiba3933 · 2014年07月21日 · 最后由 沈丽君 回复于 2018年12月13日 · 4045 次阅读

UI Automator Viewer 中识别到元素的的 content-desc,

怎么通过 content-desc 的值来定位这个页面元素呢?

我试过用 findElementByName,但是无法找到这个 element!

共收到 18 条回复 时间 点赞

可以试试用 UIAutomator 来查找 description
driver.find_element_by_android_uiautomator('new UiSelector().description("业务说明")')

用 name 查询方法试试,我是 name 查询的。。

driver.findElementByName("业务说明");

driver.findElementByAndroidUIAutomator("new UiSelector().description(\"业务说明\")");

这两种发放都试了,都是报 org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters.

为什么没人看我的帖子呢。。 http://testerhome.com/topics/1034

我也遇到了 webview 上定位元素的问题,没有 id 没有 name,也只有 content-desc 能区分。而且因为是在 webview,chromedriver 都不支持 tap 之类,但是 chromedriver2.10 的 release note 上居然写着 Resolved issue 698: implement touch flick command on Android [Pri-1],头疼到不行。
@lihuazhang 我试了下用 driver.findElementByAccessibilityId(string),appium 报错 “Unsupported locator strategy: accessibility id\n (Session info: webview=)\n”,不知道是不是因为 webview 的缘故,或者是我代码的问题

#5 楼 @aster30 webview 里面就直接用 WebDriver 的 api 啊。

@lihuazhang 因为我测的 webview 上的这个元素没有 id,没有 text,index 也识别不了,只有 content-desc 能区分,我想着或者用坐标来点击,但是 chromedriver 也不支持 touch 之类的操作

find_element_by_accessibility_id

9楼 已删除

#4 楼 @lihuazhang 这个是什么意思呢?是意思 browser=webdriver.Firefox() 这样吗?就像 seleniun 那样? 还是? appium 怎么搭配 webdriver 中的 api 呢?

@ceiba3933 ,请问这个最后楼主是怎么解决的?是用的 driver.find_element_by_accessibility_id("业务说明")?对吗

12楼 已删除

#5 楼 @aster30 同样问题,请问您解决了吗

#13 楼 @berylyl 因为这是 webview,而我们 desktop 有原始网页,我后来换了个思路,尝试用 desktop 的 xpath 的路径来定位 App 上 webview 的同样元素,结果成功啦

@aster30 如果用 xpath 的话 要怎么写呢??

#16 楼 @missz 就是 selenium 对网页元素最基本的定位啊,我怕我解释不清楚,你可以度娘或者 google 一下 xpath

这个问题解决了没?

小弟新手,我使用的代码如下:
driver.findElement(By.xPath("//android.view.View[@content-desc='业务说明']");

这里要注意的是有时候 业务说明 这几个字后面会有空格, 不知道是不是开发人员无意弄得.

小小竹排 回复

空格的问题怎么解决了?我这边也是有空格,然后定位不到

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册