相关链接(感谢白月黑羽)
实验平台
Windows11
JAVA JDK11
Python IDE “PyCharm”
Python Anaconda3(Python 3.8.8)
Appium Server GUI
Appium Inspector(新版Appium 将Inspector被分离出来作为一个独立的软件 )
Android Studio (Android SDK)
nodejs
实验步骤
1.配置环境
(1)安装PyCharm
(2)安装Anaconda3(python3.8.8)直接安装python也行
(3)在Anaconda3的控制台安装” appium-python-client”.
python需要appium-python-client调用 Appium Server 进行通信
(4)配置PyCharm的python(Anaconda3)环境
(5)安装 Android SDK 。
我手机是安卓11,为了保证SDK对安卓11的支持。这里我是下载了Android Studio。再用Android Studio下载android 11的SKD。
也可以直接下载androidsdk解压。这样占用存储空间会小一点
(5.1)配置SDK环境变量
在系统变量里添加 “ANDROID_HOME”,Android Studio的SKD默认保存在
C:\Users\用户\AppData\Local\Android\Sdk。
并在path里加上platform-tools地址
配置完以后到cmd里输入adb查看是否配置正确
(6)连接手机 打开手机开发者模式并进入,打开USB调试。(不同品牌开发者模式位置不同)
(6.1)连接好以后,打开命令行窗口(cmd), 执行命令
adb devices
来列出连接在电脑上的安卓设备。
显示device即可
(7)安装JAVA JDK11
到JAVA 官网找到JAK11的安装包,进行安装,并配置环境变量
(此处略,网上有很多jdk安装教程)
(8)安装Appium Server GUI和Appium Inspector(可以不用下,走个形式)
(新版本的Appium将功能分离了要额外安装Inspector)
(8.1)配置Appium Server GUI环境
打开Appium Server GUI,点击编辑配置(Appium启动比较慢)
填写Java JDK和Android SDK目录保存并重启
2.编写自动化测试程序
(1)获取要测试应用的Package 和 Activity
手机打开要测试的应用(这里我选择哔哩哔哩)
在CMD输入
adb shell dumpsys window w |grep \\/ |grep name=
根据不同的设备命令可能会不同
这里附上其他命令
adb shell dumpsys window w |findstr \/ |findstr name=
adb shell dumpsys activity recents | find "intent={"
找到哔哩哔哩的Package 和 Activity
根据运行结果可以得知现在哔哩哔哩(6.47.0)的Package 和 Activity分别是
tv.danmaku.bili
tv.danmaku.bili.MainActivityV2
(2)查看要测试应用的相关信息
打开Appium Server GUI启动服务
打开Appium Inspector(可以不用做,走个形式),并填写相关配置,填写远程主机,端口号和路径
{
"platformName": "Android",
"platformVersion": "11", //安卓版本号
"deviceName": "MI 9", //设备名,可自定义
"appPackage": "tv.danmaku.bili", //哔哩哔哩的Package
"appActivity": "tv.danmaku.bili.MainActivityV2", //哔哩哔哩首页的Activity
"unicodeKeyboard": "True", //使用自带输入法,输入中文时填True
"resetKeyboard": "True", //执行完程序恢复原来输入法
"noReset": "True", //不要重置App
"newCommandTimeout": "6000",
"automationName": "UiAutomator2"
}
填完后点击右下角的Start Session,用选择器捕获需要的按钮。
(4)用PyCharm编写自动化测试代码
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '11', # 手机安卓版本
'deviceName': 'MI 9', # 设备名,安卓手机可以随意填写
'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
'appActivity': 'tv.danmaku.bili.MainActivityV2', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App
'newCommandTimeout': 6000,
'automationName' : 'UiAutomator2'
# 'app': r'd:\apk\bili.apk',
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置缺省等待时间
driver.implicitly_wait(5)
# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
iknow.click()
# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()
# 根据id定位搜索输入框,点击
sbox = driver.find_element_by_id('search_src_text')
sbox.send_keys('微凉丶VATE')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)
# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")
for ele in eles:
# 打印标题
print(ele.text)
input('**** Press to quit..')
driver.quit()
编写好后运行程序,同意usb的安装。可以看到程序成功执行,顺利的抓取到了b站视频的标题