使用appium测试app自动化查找元素时比较麻烦,没有selenium查找web页面元素方便,

 

并且局限性也比较高,使用起来不是太灵活。

 

那下面介绍下我们一般经常使用到的一些查找元素的方法(已锤子手机为例)。

 

有两个工具可以用来查找元素:安卓sdk自带的uiautomator viewerappium最新版1.0.2

 

建议使用uiautomator viewer,个人感觉使用起来要方便些,包括复制元素的值也比较方便

 

先链接锤子手机:

wKioL1lCFNHwAg-jAAnXaulvUfI675.png-wh_50

方法有很多,:

通过xpyth定位findElementByXPath("//android.widget.TextView[10]")xpath下标从1开始,使用完整的classname

通过text namefind_element_by_namename对应uiautomator扫描后text的内容)

通过idfind_element_by_idid对应resource-id)

通过classname定位:find_element_by_class_name(class_name对应class)

通过accessibility idfind_element_by_accessibility_id(accessibility_id对应content-desc)

定位到某个文本框,并输入内容:

driver.find_element_by_id("xxxxx").send_keys("123456")

滑动屏幕:

获取屏幕尺寸 width=self.driver.get_window_size()['width']height=self.driver.get_window_size()['height']

滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)

 

在手机上打开头条,只介绍常用的三种:

  • find_element_by_namename对应uiautomator扫描后text的内容)

wKiom1lCF5WilQI2AAL6riQ-qKQ644.png-wh_50

脚本中输入这个name就可以定位到这个元素,然后做相应的操作,比如click()

  • find_element_by_idid对应resource-id,用这个查找比较准确)

wKiom1lCF7DiqKoDAAJbVqR-2EI868.png-wh_50

resource-id查找是最准确的!

  • find_element_by_class_name(class_name对应class,用这个一般都查找出的是一堆的数据,因为有很多地方都使用同一个class name)

wKiom1lCF8jg5bu8AAKsnIHD3cA145.png-wh_50

这个是名为android.widget.TextViewclassname,其他的行全部都是这个name

wKioL1lCF-zDeb0yAAIwjNLvqtY632.png-wh_50

看看,其他的也是这个class name,所以用这个查找会找出一个列表的数据出来,如果想单独取某个行的数据,就需要使用for 循坏或者下脚标来取[X]

 

在做app自动化时需要花很大的精力去提前获取的数据并整理,因为很多数据是不能一一

 

对应的。

有问题可以加QQ群:610845268