软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法

1 Appium常用的元素定位工具

1.1 uiautomatorviewer

在这里插入图片描述

点击,下图图标,即可连接模拟器,如下图所示:
在这里插入图片描述

点击,下图图标,即可同步模拟器操作,如下图所示:
在这里插入图片描述
此时,可以通过元素的resource-id属性来定位该元素。

若出现报错,则执行下面操作:
进入任务管理器,停止adb.exe,然后在dos界面输入adb connect 127.0.0.1:62001,再输入adb devices后,再点击uiautomatorview.bat文件去运行。

1.2 Appium Inspector

Appium server工具自带的定位工具
Appium server需要下载Appium Inspector程序,下载地址如下:

https://github.com/appium/appium-inspector/releases

下载程序,如下图所示:
在这里插入图片描述
安装成功如下图的图标:
在这里插入图片描述
双击使用Appium Inspector,Remote Path 填写/wd/hub,并且还是相关的参数,如下图所示:
在这里插入图片描述
点击【start session】按钮,成功进入页面,如下图所示:
在这里插入图片描述

1.3 Weditor

Uiautomator2 Python第三方库 appUI自动化测试框架
在dos命令窗口输入3条命令:

pip install Uiautomator2
python -m Uiautomator2 init
pip install weditor

确认工具是否安装成功,输入命令 weditor --help

Weditor工具的使用
(1)启动weditor工具
(2)选择操作系统,填写设备名称,点击连接
(3)开的定位元素,获取元素信息
(4)在dos窗口使用快捷键ctrl+c,退出weditor

2 元素的属性

(1)resourceid属性
(2)class/classname 元素标签名属性
(3)text 文本内容
(4)description或content-desc属性
(5)xpath属性
(6)appPackage属性
(7)appActivity属性

3 元素定位方法

(1)取出resourceid属性值使用find_element(By.id,xxx)或find_element(MobileBy.ID,xxx)来定位元素。
例子如下:

from appium.webdriver.common.mobileby import MobileBy
from appium import webdriver
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tal.kaoyan', # 被操作的应用程序包名
    'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 flase 重置
}
#发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
#拿出id属性值,使用MobileBy.ID方法定位
username_el = driver.find_element(MobileBy.ID,"com.tal.kaoyan:id/login_email_edittext")
username_el.send_keys("2121211212")
time.sleep(2)
username_el.clear()
time.sleep(2)
#拿出id属性值,使用By.ID方法定位
username_el_2 = driver.find_element(By.ID,"com.tal.kaoyan:id/login_email_edittext")
username_el_2.send_keys("2121211212")
time.sleep(2)
username_el_2.clear()
time.sleep(2)

分析上述代码:
MobileBy.ID取出id属性值,定位用户框。此外还可以使用By.ID取出id属性值,定位用户框。

(2)取出text属性值使用MobileBy.ANDROID_UIAUTOMATOR,这种定位方式利用系统自带框架(Uiautomator1/Uiautomator2)实现元素定位,基于java代码编写,通过这些框架实现元素定位,实质就是调用这些框架里面的方法(UiSelector类实现元素定位)。
例子如下:

# 拿出text属性值使用MobileBy.ANDROID_UIAUTOMATOR
username_el_3 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("请输入用户名")')
username_el_3.send_keys("123")
time.sleep(2)
username_el_3.clear()
time.sleep(2)

分析上述代码:
UiSelector类里面的方法,如果参数是字符串类型,必须是双引号 例如:text(“请输入用户名”)
使用UiSelector类需要实例化
此外还可以多个属性组合定位 new UiSelector().方法1().方法2().方法3(),如下代码:

username_el_4 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().className("android.widget.EditText").resourceId("com.tal.kaoyan:id/login_email_edittext")')
username_el_4.send_keys("123123")
time.sleep(2)
username_el_4.clear()
time.sleep(2)

(3)取出description/content-desc属性值定位
例子,使用description/content-desc属性值定位QQ应用程序的账号文本框,代码如下:

import time
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy
# 设置操控终端的配置参数
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tencent.mobileqq', # 被操作的应用程序包名
    'appActivity':'com.tencent.mobileqq.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 ;flase 重置
}
# 发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
# 定位登录按钮
login_button = driver.find_element(MobileBy.ID,'com.tencent.mobileqq:id/btn_login')
# 点击登录按钮
login_button.click()
time.sleep(2)

# 取出description/content-desc属性值定位
ele1 = driver.find_element(MobileBy.ACCESSIBILITY_ID,"请输入QQ号码或手机或邮箱")
ele1.send_keys("123")
time.sleep(2)

分析上述代码:
首先获取QQ应用程序的包名和启动页面,然后使用MobileBy.ID定位【登录】按钮,最后使用MobileBy.ACCESSIBILITY_ID定位用户名文本框。

(4)选择xpath定位
例子,使用xpath定位定位考研帮app用户名文本框,代码如下:

import time

from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy

# 设置操控终端的配置参数
desired_caps = {
    'automationName':'UiAutomator2',
    'platformName':'Android',# 指定操作系统
    'platformVersion':'7.1.2', # 指定系统版本
    'deviceName':'127.0.0.1:62001', # 指定设备名称
    'appPackage':'com.tal.kaoyan', # 被操作的应用程序包名
    'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity', # 启动页面
    'noReset':'true' #true 不重置 ;flase 重置
}
# 发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
# 定位用户名文本框
username_ele= driver.find_element(MobileBy.XPATH,'/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ScrollView/android.widget.LinearLayout/android.widget.EditText[1]')
username_ele.send_keys("123")
time.sleep(2)

分析上述代码:
通过appium spector工具定位用户名文本框,找到对应的xpath值,如下图所示:
在这里插入图片描述

小结

1 Appium常用的元素定位工具有三个,Android sdk\tools目录下的uiautomatorviewer.bat、appium Inspactor和Weditor。
2 根据id属性值、xpath值、text 文本内容、description或content-desc值来定位
3 在find_element()方法选择MobileBy.ID、By.ID、MobileBy.XPATH、MobileBy.ANDROID_UIAUTOMATOR、MobileBy.ACCESSIBILITY_ID作为参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值