安装appium client:
cmd下输入命令:pip install Appium-Python-Client
pycharm下一个简单的实例,通过appium驱动android模拟器->打开计算器->计算5+6=?->关闭计算器
from appium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.deskclock'
desired_caps['appActivity'] = '.DeskClock'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
driver.find_element_by_name("5").click()
driver.find_element_by_name("+").click()
driver.find_element_by_name("6").click()
driver.find_element_by_name("=").click()
driver.quit()
webdriver.Remote实际上就是原生webdriver的子类,另外Remote()构造函数的第一个参数中需要显示指定appium server监听的端口
platformName:使用哪种移动平台。iOS, Android, or FirefoxOS
deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4, etc…
appActivity:待测试的app的Activity名字。比如MainActivity, .Settings。注意,原生app的话要在activity前加个”.“。
appPackage:待测试的app的java package。比如com.example.android.myApp, com.android.settings。
其他:
app:应用的绝对路径,注意一定是绝对路径。如果指定了appPackage和appActivity的话,这个属性是可以不设置的。另外这个属性和browserName属性是冲突的。
browserName:移动浏览器的名称。比如Safari’ for iOS and ‘Chrome’, ‘Chromium’, or ‘Browser’ for Android;与app属性互斥。
udid:物理机的id。比如1ae203187fc012g
monitor.bat:
该文件位于your_andriod_sdk_path ools下面,可以帮我们找到android控件的content-description,为以后的find_element_by_accessibility_id 定位方法做参数使用
uiautomatorviewer.bat:
该文件位于your_andriod_sdk_path ools下面
该工具主要用来查看控件的属性,比如resource id,class name等。
该工具也可查看被测app的appPackage(Desired Capabilities中使用)
查找appActivity和appPackage:
a、启动待测apk
b、开启日志输出:adb logcat>D:/log.txt
c、关闭日志输出:ctrl+c
d、查看日志
找寻:
Displayed com.mm.android.hsy/.ui.LoginActivity: +3s859ms
appPackage = com.mm.android.hsy
appActivity = .ui.LoginActivity
python篇
el = self.driver.find_element_by_android_uiautomator('new UiSelector().description("Animation")')
self.assertIsNotNone(el)
els = self.driver.find_elements_by_android_uiautomator('new UiSelector().clickable(true)')
self.assertIsInstance(els, list)
el = self.driver.find_element_by_accessibility_id('Animation')
self.assertIsNotNone(el)
els = self.driver.find_elements_by_accessibility_id('Animation')
self.assertIsInstance(els, list)
总的来说就是在driver里增加了
find_element_by_accessibility_id
find_elements_by_accessibility_id
find_element_by_android_uiautomator
find_element_by_android_uiautomator
等方法
Appium连接真机
1)打开手机的USB调试模式
不同的手机打开调试模式的方式不同。一般都在设置中的开发者模式中打开
2)手机连接电脑
使用数据线连接手机与电脑,然后在cmd中输入adb devices查看是否连接成功
新手可能会出现两个问题
一是输入adb命令时提示不是内部命令或者外部命令
那么你需要下载一个adb工具包并存放在C:WindowsSystem32目录下(必须强调:与sdk中的adb工具包版本一致!!!!)
二是需要打开手机的usb调试模式并安装好驱动
之后在cmd中输入adb devices 提示如下图则成功
3)启动appium服务
在cmd命令中输入:appium
启动成功
或者appium上配置:
安装好django,版本1.9,使用pip install django==1.9命令安装即可