Appium+python自动化学习(二)——定位元素

前言:

定位元素:Appium有两种方式

1.Appium Inspector

2.uiautomatorviewer

 

一、Appium Inspector

1、设置 Android Settings

 

2、启动 Appium

 

3、启动Inspector

 

 

4、会遇到的异常:

a.每次启动都会给你手机上重新安装一次应用

b.不能用鼠标指定某个元素

c.不能重复刷新,页面实时更新差

 

一般不建议使用这个元素定位工具。

 

二、uiautomatorviewer

 

1、下载uiautomatorviewer

下载安装好SDK后,其实自带了uiautomatorviewer,在tools工具下:

 

2、启动uiautomatorviewer

双击uiautomatorviewer,并点击左上角的手机ico,刷新

 

3、可以根据鼠标在视图指定元素

a.左边为界面视图

b.右上边是元素菜单树

c.右下边是每个元素的属性

 

4、webdriver提供的11种元素定位方法

可以再pycharm上输入driver.find_element_by自动匹配出来

 

三、通过属性定位元素

 

这里使用uiautomatorviewer获取元素,通过id,name.class属性定位

 

1、id定位

 

格式:driver.find_element_by_id("resource-id")

driver.find_element_by_id("com.hundsun.stockwinner.grzq:id/ninecase")

 

 

 

2、name定位

 

格式:driver.find_element_by_name("text")

driver.find_element_by_name("系统设置")

 

这里出现乱码,还有部分元素name是会变的。所以name 定位元素不准确

 

 

3、class定位

 

格式:driver.find_element_by_class_name("class属性")

driver.find_element_by_class_name("android.widget.Button")

 

class元素不是唯一,所以单独以class定位也是不准确的。

 

 

上面为元素的定位。

 

三、通过Xpath来定位

 

1、有id和name的情况

a.可以直接通过上面的元素定位法来定位 driver.find_element_by_id("resource-id")。如果有id或name不唯一,可以通过加下标[1][2]来定位。如:

driver.find_element_by_id('com.wlqq:id/title_left_btn')[1]

b.可通过xpath=(//android.widget.TextView[@resource-id="com.wlqq:id/title_left_btn"])如果同样有id或name不唯一,也可通过加下标[1][2]来定位。如:

xpath=(//android.widget.TextView[@resource-id="com.wlqq:id/title_left_btn"])[1]

下标表示的是同类的第几个,不是前面位置的数字。坐标前用括号括起来。

 

2、没有id和name的情况

a.绝对路径:

例子:

要定位ImageButton[600,50][720,150] 这里有七级,绝对路径需从第一级一级一级找。

xpath= //android.widget.LinearLayout

           /android.widget.FrameLayout

           /android.widget.LinearLayout

           /android.widget.RelativeLayout

           /android.widget.RelativeLayout

           /android.widget.LinearLayout[2]

           /android.widget.ImageButton

 

b.相对路径:

相对路径可以通过距离 需要定位的位置 最近并且很容易准确定位的控件 来参照。一般用text为不变的或唯一值 id。

兄弟关系:

preceding-sibling:: 找到当前节点前面节点 也就是哥哥节点,following-sibling::找当前节点后面节点 也就是弟弟节点

父子关系:

parent::  或   ..

例子:

 

通过TextView:钱包,当做轴点,参照节点。

兄弟关系:

xpath=//android.widget.TextView[@text="钱包"]

          /following-sibling::android.widget.LinearLayout

          /android.widget.ImageButton

父子关系:

xpath=//android.widget.TextView[@text="钱包"]

          /parent::android.widget.RelativeLayout

          /android.widget.LinearLayout[2]

          /android.widget.ImageButton

xpath=//android.widget.TextView[@text="钱包"]

          /..

          /android.widget.LinearLayout[2]

          /android.widget.ImageButton

 

 

 

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值