Appium-入门实例1
参考:(https://blog.csdn.net/zh175578809/article/details/76862590)
第一步:启动虚拟设备
在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳。
进到Android SDK的目录,双击运行AVD Manager.exe
运行 :software/adt/SDK Manager.exe,点击Tools,选择Manager AVDS,点击Create创建一个安卓模拟器
遇到的问题:
- 当选择Android 4.4W.2-API20时,没有系统镜像文件,没有找到相应解决方案
- 替代方案:点击Packages,选择Reload ,切换到Tools,发现多了很多其他的版本或工具,选择其中,勾选之后点击install --本次学习选用的是4.4.2(API19)
- 重启之后,点击Create,创建一个模拟器,点击ok
4、点击OK之后,选中改虚拟设备,点击start
5、首次启动,时间可能会比较慢。等待一段时间后的界面
第二步:需要获取应用的packageName 和activityName
在编写测试脚本之前,需要知道被测apk的packageName和要启动的activityName,如果是第三方的apk,有现成的可以直接应用。这里是模拟器内置的应用,需要把apk从模拟器中导出来,一般模拟器中的预置的应用都放在手机的system/app目录中,使用adb shell 命令进入目录查看计算器应用的apk名称
》》adb shell
》》cd system/app
》》ls *.apk
》》db pull system/app/Calculator.apk d:/
使用ls *.apk命令列出所有的apk,查找到apk文件为Calculator.apk,然后使用adb pull system/app/Calculator.apk d:/命令将文件导出到电脑中。
遇到问题:5038端口被占用
处理方案1:
1、 查看adb bind 的是哪个端口(图中标明端口被占用)
2、 查看那些进程使用该端口 netstat -aon|findstr 5037
3、 tasklist /fi "PID eq 12444"
4、 强制退出进程 (taskkill /pid 5008 /f)
5、 adb start-server 重启adb
方案2 :
1、更改adb的端口,在环境配置中增加 ANDROID_ADB_SERVER_PORT
2、 检查5038端口是否有被占用,杀掉进程
3、 adb devices –检查设备是否连接上 (如果提示offline,重新启动虚拟器试一下,目前不知道具体方案)
处理完上面的事情,接着进行以下操作:
设备能够连接之后,adb shell 进入终端
检查apk的名字以及路径,su,修改文件为 chmod 777
导出apk到电脑上
退出终端模式
》》db pull system/app/Calculator.apk .
如果遇到Read-only file system 的报错信息
adb remount(它的意思是将设备改为可读可写。)
看到remount succeeded后,再db pull system/app/Calculator.apk .
然后
将apk导出后,Android SDK中有一个aapt的工具可以用来查看应用的包名和要启动的activity名称,工具在SDK的build-tools目录下,命令格式为”aapt dump badging apk路径”
PackageName:
在输入快到结尾的时候,有一行包含应用启动时打开的activity名称:
第三步:编写测试脚本(参考了网上的例子:一个计算器的自动执行计算的例子来感受一下appium的工作)
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': 'emulator-5554',
'platformVersion': '4.2',
'appPackage': 'com.android.calculator2', 'appActivity': 'com.android.calculator2.Calculator' } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) driver.find_element_by_name('7').click() driver.find_element_by_name('+').click() driver.find_element_by_name('8').click() driver.find_element_by_name('=').click()
第四,运行脚本
遇到问题:因为Appium-Python-Client,没有完全处理好
处理方案:去\Python35\Lib\site-packages\selenium\common找到exceptions.py添加下面这个类就行了
Python exceptions.py –运行一下这个脚本
再次检查Appium-Python-Client安装成功