https://blog.csdn.net/weixin_45912307/article/details/122392478
1. 启动参数获取
1.1 下载qq1.2 获取启动参数1.3 整理启动参数 2元素定位工具和定位方式
2.1 第一种: android SDK自带工具:uiAutormatorViewer2.2 第二种:python版uiAutomator2中的weditor2.3 第三种:appium自身定位工具appium inspector
2.3.1 点击appium搜索按钮2.3.2 填写连接设备参数2.3.3 工具使用及解读
1. 工具界面说明2. 查找元素3. 录制脚本(qq登录为例) 2.4 app自动化常用的元素定位方式 3. 实际案例(以qq登录为例)
1. 启动参数获取 1.1 下载qq官网:https://im.qq.com/download
1. 获取 *** 作系统版本
2. 获取设备名称
cmdadb devices
3. 安装qq
4. 获取包名和启动页面名称
方式1:
到build-tools的目录下选择任意一个版本,以32.0.0为例,进入aapt.exe目录下cmd回车打开终端输入aapt dump badging apk安装路径(如C:Users用户名称DownloadsAndroid_8.8.55.6900_537105254_32.apk)
方式2:
cmd回车打开终端输入adb logcat |findstr -i Displayed
5. 设置appium server启动参数
# 1. 从appium库里导入driver对象 from appium import webdriver # 2. server启动参数 desired_caps = dict() desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '5.1.1' desired_caps['deviceName'] = 'emulator-5554' desired_caps['appPackage'] = 'com.tencent.mobileqq' desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity' # 3. 声明driver对象 driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps)2元素定位工具和定位方式 2.1 第一种: android SDK自带工具:uiAutormatorViewer
1. 安装工具
pip install -U uiautomator2 | 安装第三方库 python -m uiautomator2 init | 初始化uiautomator2 pip install -U weditor | 安装定位工具 weditor --help | 检查是否安装成功 weditor | 启动定位工具(网页版)
2. 工具使用
启动命令:weditor
2.3 第三种:appium自身定位工具appium inspector
2.3.1 点击appium搜索按钮
{ "platformName": "Android", "platformVersion": "5.1.1", "deviceName": "emulator-5554", "appPackage": "com.tencent.mobileqq", "appActivity": "com.tencent.mobileqq.activity.SplashActivity", "noRest": true }2.3.3 工具使用及解读 1. 工具界面说明 2. 查找元素
id:id唯一则有值不为空xpath:采用绝对定位方式
3. 录制脚本(qq登录为例)
1.录制脚本
2.通过录制得到的脚本
el1 = driver.find_element_by_id("com.tencent.mobileqq:id/btn_login") el1.click() el2 = driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱") el2.clear() el2.send_keys("qq号码") el3 = driver.find_element_by_accessibility_id("密码 安全") el3.clear() el3.send_keys("自己的qq密码") el4 = driver.find_element_by_id("com.tencent.mobileqq:id/pqz") el4.click() el5 = driver.find_element_by_accessibility_id("登 录") el5.click()
3.组装脚本
# 1. 从appium库里导入driver对象 import time from appium import webdriver # 2. server启动参数 def qq_login(): desired_caps = { "platformName": "Android", "platformVersion": "5.1.1", "deviceName": "emulator-5554", "appPackage": "com.tencent.mobileqq", "appActivity": "com.tencent.mobileqq.activity.SplashActivity", "noRest": True } # 3. 声明driver对象 driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps) # 隐式等待10s元素出现 driver.implicitly_wait(10) el1 = driver.find_element_by_id("com.tencent.mobileqq:id/btn_login") el1.click() el2 = driver.find_element_by_accessibility_id("请输入QQ号码或手机或邮箱") el2.clear() el2.send_keys("49xxxxx00") el3 = driver.find_element_by_accessibility_id("密码 安全") el3.clear() el3.send_keys("自己qq密码") el4 = driver.find_element_by_id("com.tencent.mobileqq:id/pqz") el4.click() el5 = driver.find_element_by_accessibility_id("登 录") el5.click() time.sleep(5) driver.quit() if __name__ == '__main__': qq_login()
4.运行脚本效果
2.4 app自动化常用的元素定位方式
id | driver.find_element_by_id(id_value) ANDROID_UIAUTOMATO | Rnew UiSelector().方法名称(值).方法名称(值).方法名称(值) xpath | driver.find_element_by_xpath(xpath_value) description content-desc | driver.find_element_by_accessibility_id('view-text') className | driver.find_element_by_class_name(class_value) 坐标 | os.system('adb shell tap x y') 模糊定位 | contains(@key,value)3. 实际案例(以qq登录为例)
# 1. 从appium库里导入driver对象 import time from appium import webdriver # 2. server启动参数 def denglu(): desired_caps = dict() desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '5.1.1' desired_caps['deviceName'] = 'emulator-5554' desired_caps['appPackage'] = 'com.tencent.mobileqq' desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity' desired_caps['noRest'] = True # 3. 声明driver对象 driver = webdriver.Remote('http://127.0.0.1:5554/wd/hub', desired_caps) driver.implicitly_wait(10) # 4. 点击登录 driver.find_element_by_id("com.tencent.mobileqq:id/btn_login").click() # 5. 输入用户名 user_name = driver.find_element_by_xpath('//*[@content-desc="请输入QQ号码或手机或邮箱"]') # 清除输入框 user_name.clear() user_name.send_keys('492224xxxx') # 6. 输入密码 user_pwd = driver.find_element_by_id('com.tencent.mobileqq:id/password') # user_pwd = driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/password"]') # 清除输入框 user_pwd.clear() user_pwd.send_keys('xxxxx') # 7.勾选同意协议 driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/pqz"]').click() # 8.点击登录 driver.find_element_by_xpath('//*[@resource-id="com.tencent.mobileqq:id/login"]').click() # 退出或关闭驱动 time.sleep(15) driver.quit()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)