Appium入门案例之Android篇
Appium入门案例之Android篇
Appium环境搭建篇参考这个“环境搭建”
(一)、获取package和activity
安卓自动化测试之前首先需要了解package和activity,由于测试前需要这两个参数的值来启动,一般称前置代码;
获取手机当前运行的package和activity的命令是:
adb shell dumpsys window w |grep \/ |grep name= #mac
adb shell dumpsys window w |findstr \/ |findstr name= #windows
红框的内容就是需要用到的package和activity
也可以通过adb命令来得到,比如
1.adb shell pm list packages (获取所有包名)
2.adb logcat>D:/log.log (抓取手机log到指定路径)
用notepad打开并搜索:cmp=c
可以找到对应的package和activity
(二)、连接Appium,启动会话
运行appium,启动服务之后,点击右上角第一个按钮进行配置
如下图所示:
"platformName": "Android", #名称 "platformVersion": "10", #版本 "deviceName": "sanxing", #设备名 "appPackage": "com.android.calculator2", #package名 "appActivity": "com.android.calculator2.Calculator" #activity名
填好之后启动会话即可。
出现如下画面即代表已经连接上,在这个界面可以进行元素的定位以及对手机发送一些消息,类似于uiautomatorviewer工具
(三)、Appium常用的api
driver.start #启动app driver.close_app #关闭app driver.install_app(path)#安装app driver.remove_app(package名称)#卸载app is_app_installed(package名称) 返回布尔型 用于判断是否安装 background_app(时间) #置于后台 时间到了会自动回来 driver.location# 获取元素位置信息 driver.size #获取元素大小 driver.text#获取元素文本 driver.get_attribute()value #获取元素属性值 [ resources-id 写成resourceId class写成className name可以获取text和content-desc两个属性的中的文本值 ] swipe、scroll、drag_and_drop(都是滑动) driver.swipe(start_x,start_y,end_x,end_y,duration=None) (有惯性) driver.scroll(开始的元素、结束的元素) #从一个元素滑动到另外一个元素后停留的地方(有惯性) driver.drag_and_drop(开始的元素,结束的元素)#从一个元素滑动到另外一个元素,第二个元素替代第一个元素的位置(没有惯性) TouchAction 高级手势,实现滑动长按拖动,首先要创建touchaction对象,最后都要用perform()执行 #执行轻按 t1=TouchAction(driver) t1.tap(定位).perform() #坐标形式 t1.tap(x=100,y=100).perform() #双击 t1.tap(定位,count=2).perform() #按下 t1.press(定位or坐标).perform() t1.press.(定位or坐标).release().perform() #抬起 #长按 t1.press(定位or坐标).perform() t1.press.(定位or坐标).wait(2000)release().perform() #单位毫秒,等待时间 t1.press(定位or坐标).long_press(定位or坐标,duration=1000).perform() #单位毫秒,等待时间 #移动 t1.move_to(定位or坐标).perform() #获取手机分辨率 driver.get_window_size() #截图 driver.get_screenshot_as_file(“路径”) #获取手机网络 driver.network_connection driver.set_network_connection(1)飞行模式 1.飞行模式 2仅Wi-Fi 4仅数据 6全部  #发送手机按键到设备(三大按键、音量、电源) driver.press_keycode() 具体值参考https://blog.csdn.net/shililang/article/details/14449527 #下拉通知中心 driver.open_notifications()
(四)实例操作
下面贴一段代码来实际操作计算器以及跳转到浏览器中输入内容
from appium import webdriver import unittest,time desired_caps=dict() desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '10' desired_caps['deviceName'] = 'huawei' desired_caps['appPackage'] = 'com.android.settings' desired_caps['appActivity'] ='com.android.settings.HWSettings' driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) time.sleep(3) print(driver.current_package) print(driver.current_activity) driver.start_activity('com.android.calculator2','com.android.calculator2.Calculator') time.sleep(5) print(driver.current_package) print(driver.current_activity) driver.find_element_by_id('com.android.calculator2:id/digit_4').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/digit_6').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/op_add').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/digit_9').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/eq').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/formula').clear() time.sleep(1) driver.start_activity('com.android.browser','com.uc.browser.InnerUCMobile') time.sleep(3) driver.find_element_by_xpath('//android.view.View[@content-desc="搜索或输入网址"]/com.uc.framework.ui.customview.b.a[2]').click() time.sleep(1) driver.find_element_by_class_name('android.widget.EditText').send_keys("test") time.sleep(1) driver.quit()
到此appium关于安卓的操作已经差不多了