Appium [问题] 关于 Loactor 定位和 is_displayed () 判断当前元素是否可见

王明海 · 2016年08月05日 · 最后由 陈恒捷 回复于 2016年08月06日 · 2065 次阅读

appium1.4.13

问题 1.Inspector 中 Loactor 定位时多个元素被发现,此时如何定位?

问题 2.is_display() 无效,如何判断当前界面某元素是否可见

具体如下


1. 在 Appium Inspector 中使用 Loactor 定位元素时 Multiple Elements Were Found 的问题


使用场景:点自己底部 tabbar 中的自选按钮后,想判断是否正常跳转至自选页,于是优先想到判断此页面导航栏的标题是否为自选,可是在使用find_element_by_accessibility_id("自选")可能会受到底部 tabbar 的自选按钮的影响,就算没有跳转到自选页也不会报错,目前想到的解决方法是使用 Xpath 查找导航栏的自选

2. 基于问题 1 不可见的元素也会被发现,在 appium 中要判断某个元素是否为用户可见,使用is_displayed()返回值均为False

问题场景如下:此键盘为自定义键盘,目前已经封装能够实现输入数字或者字母自动的点击对应的元素进行点击,可是不能自动判断当前键盘是数字键盘或者英文键盘,无法自动切换中英文键盘。
本意想做一个根据输入的脚本是数字或者字母自动进行键盘切换

具体问题:通过判断左下角元素是字母键盘还是数字键盘实现中英文切换,如 2(1)图数字键盘中左下角的字母键盘元素可见,此时数字键盘元素应该是不可见的,只有跳转至(2)图时才可见,可是两个元素都可以被findis_displayed的返回值均为false,在 testerhome 社区有看到is_displayed在 appium 中是不可用的,关于此问题有更好的解决方式吗?

共收到 3 条回复 时间 点赞
  1. 问题一用 xpath 应该是最好的方法。
  2. 不要相信 inspector 那个窗口里面的 visible 属性,你要相信的是 copy xml 按钮获取到的元素树里面显示的内容。这貌似是 inspector 的一个老 bug ,无论实际上 visible 属性是啥,它的窗口都会显示 false 的。

至于你提到的 testerhome社区有看到is_displayed在appium中是不可用的 ,不知道你具体是哪篇文章看到的?能给下出处吗?


来自Appium Python API 中文版 By-HZJ,在代码里面通过打印测试了,不管是否可见均返回 false

#2 楼 @heminwon 如果是这样,那可能 UIAutomation 对于你这个元素是否可见(isVisible 属性)判断不准确。

我想到两个可能的解决方法:

  1. 让开发直接在代码里面根据是否显示修改 accessibility label 的值。
  2. 你找另外一个 is_display 能反映键盘状态的元素。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册