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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章