Python3+Appium基于安卓平台的app自动化
一、环境搭建
电脑端(Windows系统):
1、安装Appium-Python-Client包,直接cmd窗口输入pip3 install Appium-Python-Client
2、确保安装匹配版本的selenium和appium,使用命令pip install selenium -U
3、安装Appium-windows,下载地址:http://appium.io/
4、安装jdk,使用命令java -version检查jdk是否安装成功
5、安装androidsdk,下载地址:
链接:https://pan.baidu.com/s/1xHDZU5nyLKb8aVtOwGr9zg
提取码:qgdq
- 把下载好的androidsdk.zip压缩包解压。
- 配置环境变量。
- 新建一个ANDROID_HOME系统变量,变量值为上一步的路径。
- 在path路径追加platform-tools路径
- 打开cmd窗口输入adb,出现下图所示表示配置成功
手机端:
真机有线:
1、用usb线连接到电脑,一头连手机,一头连电脑,usb连接方式选择传输文件
2、进入手机设置,找到版本号,不断点击版本号,直到提示已处于开发者模式
3、搜索开发者模式,在开发者模式中,启动usb调试 ,确认授权电脑端调试,这样appium才能驱动手机
4、在电脑上执行adb devices命令,查看连接的设备,不显示设备的话在电脑和手机上安装手机助手再查看
真机无线(adb无线连接功能)
1、先以usb有线连接方式连接到计算机
2、激活手机adb的无线服务(确保手机和电脑处于同一局域网)
在cmd命令行输入adb tcpip 5555
3、计算机以无线方式连接到手机
在cmd命令行输入adb connect 手机ip
4、连接成功后就可以拔掉有线了
安卓模拟器
1、下载模拟器并安装
下载一款安卓模拟器,夜神模拟器下载地址:https://www.yeshen.com/
2、打开模拟器应用
在开发者模式中打开usb调试
3、连接模拟器
在cmd命令行输入adb connect 127.0.0.1:62001
二、元素定位工具
1、Appium-windows自带的
- 点击启动appium
- 点击第1个图标
- 填写设备信息(需要与被测app保持会话才能定位元素),点击Start Session
2、weditor
- 安装
pip3 install weditor
- 启动
python -m weditor
- 运行
在弹出的浏览器(默认浏览器最好不要设置为IE,一般选择谷歌或火狐)页面点击上面的Connect按钮,元素定位工具会自动连接手机,并在上面安装ATX程序(远程服务),没有自动安装的话,执行:pip3 install --pre --upgrade uiautomator2,python -m uiautomator2 init,接下来就可以查看元素了,刷新页面可以点击Dump Hierarchy按钮,也可以将右侧按钮设置成实时状态,这样不需要每次手动刷新页面了。
注意:
运行代码时,需要在ATX程序点击停止UIAUTOMATOR
3、androidsdk中的uiautomatorviewer
- 点击uiautomatorviewer.bat打开
- 点击第2个图标,打开设备后就可以进行元素定位了
三、上代码
"" 自动化BOSSAPP 选择第一个搜索结果,点击进入详情, 获取职位名称下面的信息:地区、工作年限、学历 """ from appium import webdriver # 自动化环境配置信息 desired_caps = { # 移动设备平台 'platformName': 'Android', # 平台OS版本号,写整数位即可 'plathformVersion': '10', # 设备的名称--值可以随便写 'deviceName': 'test0106', # 提供被测app的信息-包名,入口信息: # 1.打开被测app,2.命令行输入以下信息 # adb shell dumpsys activity recents | findstr intent={ 'appPackage': 'com.hpbr.bosszhipin', 'appActivity': '.module.launcher.WelcomeActivity', # 确保自动化之后不重置app 'noReset': True, # 设置session的超时时间,单位秒,默认60s 'newCommandTimeout': 6000, # 设置底层测试驱动-1.15默认使用的底层驱动就是UiAutomator2 'automationName': 'UiAutomator2', # 或者UiAutomator1 'skipServerInstallation': True # 跳过UI2的安装,如果第一次运行程序,不要添加该配置 } # 创建驱动 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) driver.implicitly_wait(10) # 隐式等待 # 1.点击放大镜 ele = driver.find_elements_by_id('com.hpbr.bosszhipin:id/img_icon')[1] ele.click() # 2.在搜索框输入自动化测试 driver.find_element_by_id('com.hpbr.bosszhipin:id/et_search').send_keys('自动化测试') # 3.点击第一个搜索结果 driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_filtered_name').click() # 4.获取当前页面所有职位信息元素 job_msg = driver.find_elements_by_id('com.hpbr.bosszhipin:id/view_job_card') for job in job_msg: # 输出岗位名称 name = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_position_name').text # 输出薪资 salray = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_salary_statue').text # 输出公司名称 company = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_company_name').text # 5.点击进入详情 job.click() # 6.获取职位名称下面的信息:地区、工作年限、学历 address = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_location').text work_years = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_work_exp').text education = driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_required_degree').text print(f'{name}|{salray}|{company}|{address}|{work_years}|{education}') driver.find_element_by_id('com.hpbr.bosszhipin:id/iv_back').click() # 回退到职位信息列表 driver.quit()