听标题挺高大上的,其实内容还是脚本小子的高度。。。
为了写个月报一下午抓紧学点东西,好凑点字数,汗。。。
为啥学这个内容,因为找内容的时候翻csdn翻到一个自动抢红包的,就是用的这个技术,前面实验挺好,到后面登录微信的时候先是微信密码忘了,后来又找不到ui控件的标识,到饭点了,不搞了。。。
文章目录
- appium是什么
- appium环境配置和使用
- python-appium打开qq
- appium inspector使用
- python-appium登录qq
- 参考链接
appium是什么
appium是一个开源的移动端自动化测试工具,支持跨平台。appium类库封装了标准selenium客户端类库,为用户提供json格式selenium命令以及额外的移动设备控制相关的命令等。
官网连接https://github.com/appium/appium-desktop/releases/
appium环境配置和使用
使用appium打开服务端,然后可以使用python第三方包appium的客户端来连接服务端,做一些任务
首先需要先安装好JDK和Android Sdk,网上一堆教程,这里不累赘了。
安装打开之后点击Edit Configurations
如果是配置好了环境变量后,appium会自动填充上路径,save就可以了
点击start
进入主界面
现在点击这个搜索图标会跳出一个网页,说这个功能给分离出来成为另一个软件了,从这个网页里下载就可以,
这个工具相当于连接上手机设备的一个app界面,然后鼠标点击界面上的控件可以查看对应的控件标识信息
pip安装Appium-Python-Client
pip install Appium-Python-Client
手机设备(这里使用逍遥模拟器)打开开发者模式,打开usb调试功能。就可以用电脑来连接手机设备了
adb:Android调试桥
用这个工具可以操作管理android模拟器或真机设备
adb devices -l
: 可以查看当前电脑可以连接到的设备列表
adb查看手机上某个app的appPackage和appActivity
adb shell dumpsys activity recents | find "intent={"
appPackage=com.tencent.mobileqq appActivity=.activity.SplashActivity
python-appium打开qq
在pycharm中运行如下代码,就可以自动让逍遥模拟器打开qq应用了
# 导入webdriver
from appium import webdriver
# 初始化参数
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '7', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
'appPackage': 'com.tencent.mobileqq', # 启动APP Package名称
'appActivity': '.activity.SplashActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
'newCommandTimeout': 6000,
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 退出程序
# driver.quit()
appium inspector使用
获取控件标识而也可以用androidSDK目录下的
\tools\bin\uiautomatorviewer.bat
工具,点击工具左上角第二个图标自动获取设备当前界面的ui信息
将上面代码里的初始化参数输入到inspector中,然后点击start Session
启动后如下所示,这时就和在浏览器里F12的效果一样了,鼠标点击那个ui空间,右面会出现相应的id
python-appium登录qq
模拟输入用户名和口令点击登录操作
# 导入webdriver
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
# 初始化参数
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '7', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
'appPackage': 'com.tencent.mobileqq', # 启动APP Package名称
'appActivity': '.activity.SplashActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
'newCommandTimeout': 6000,
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(5)
# 点击登录
driver.find_element(AppiumBy.ID, "btn_login").click()
# 设置等待时间,如果不给时间的话可能会找不到元素
driver.implicitly_wait(3)
driver.find_element(AppiumBy.XPATH, '//android.widget.EditText[@content-desc="请输入QQ号码或手机或邮箱"]').send_keys("")
driver.find_element(AppiumBy.ID, "password").send_keys("")
# 键盘回车 driver.keyevent(66)
driver.find_element(AppiumBy.ID, "login").click()
# 退出程序
# driver.quit()
参考链接
https://ispacesoft.com/42295.html
还有一个批量删除被删除的好友,原理比较简单,但是在复现的过程中控件标识找不到,遂放弃
https://blog.csdn.net/ityard/article/details/109558416