安装
1.pip install appium-python-client
2.安装appium server
https://github.com/appium/appium-desktop/releases
配置完ANDROID_HOME和adb后安装
3.安装JDK
因为我们做安卓自动化,需要用到Android SDK,这个需要JDK
可以cmd+r ,运行一下java -version,查看一下目前电脑中有没有安装java
4.安装AndroidSDK
http://tools.android-studio.org/index.php/sdk
选第一个exe文件
安装参考:
https://blog.csdn.net/weixin_52358204/article/details/125964811?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167992193716800182164541%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167992193716800182164541&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-125964811-null-null.142v76pc_search_v2,201v4add_ask,239v2insert_chatgpt&utm_term=androidsdk%E4%B8%8B%E8%BD%BD&spm=1018.2226.3001.4187
最后只要把D:\tools\platform-tools ,添加到系统环境变量的path中就行了
cmd + r 验证一下 adb --version
- 安装逍遥模拟器
下载地址:http://www.42xz.com/soft/217.html
安装好以后,点击三条杠,系统配置,选择低配。。。。
显示 选择 手机
点击确定 立即重启
使用
1.打开逍遥模拟器
2. 把测试apk装上,直接拖拽
3. 安装成功后,我们要通过adb命令连接逍遥模拟器
cmd+r
adb connect 127.0.0.1:21503 (21503是逍遥模拟器默认端口)
提示successfully
tips:
如果这时候报错,可以后台看一下,关掉游侠模拟器进程,然后再连接
- 打开pycharm,代码准备好
from appium import webdriverdesired_caps = {'platformName':'Android', # 被测试手机是安卓'platformVersion':'7', # 手机安卓版本'deviceName':'deviceName', # 设备名,安卓手机可以随便填写'appPackage':'', # 启动 APP Package名称'appActivity':'', # 启动 Activity名称'unicodeKeyboard':'', # 使用自带输入法,输入中文时填True'resetKeyboard':'', # 执行完程序恢复原来输入法'noReset':'', # 不要重置APP'newCommandTimeout':6000,'automationName':''
}driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)driver.implicitly_wait(5)
time.sleep(5)
driver.find_element_by_xpath('//android.widget.TextView[@text="归路"]').click()
time.sleep(5)
score = driver.find_element_by_id('com.fn.fengniao:id/tv_score').text
# driver.find_element('com.fn.fengniao:id/ll_search').send_keys('狂飙')
# time.sleep(1)
# driver.find_element('com.fn.fengniao:id/tv_cancel').click()print(score)
其中如何获取appPackage、appActivity,
方便起见,我们只记一种方法:
现在模拟器中打开app,
命令行中执行: adb shell dumpsys window w | findstr / | findstr name=
得到:
C:\Users\frank>adb shell dumpsys window w | findstr / | findstr name=
mSurface=Surface(name=com.fn.fengniao/com.fn.fengniao.SplashActivity)
包名:com.fn.fengniao
activity:com.fn.fengniao.SplashActivity
-
打开appium server,直接start server
-
那么模拟器中元素怎么定位呢?
我们使用appium inspector这个工具来进行元素定位
先把我们代码中的desired_cap信息填入appium inspector的Desired Capabilities中:
tips:运行appium inspector时候报错:
Failed to create session. The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
解决:
远程主机:需要填写AppiumServer服务的主机地址,默认127.0.0.1
远程端口:需要填写AppiumServer服务的主机端口,默认4723
远程路径:appium服务器的路径,默认填写/wd/hub
移动端定位元素方式:
根据ID:
安卓中的ID也是唯一的,用id定位效率最高,但是在安卓中的id是指resource-id。
根据class:
值得一提的是xpath我们在安卓中写的是://类名[@属性名=属性值]
其他用的比较少了,我就不细说了。