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关于安卓的操作已经差不多了

 

posted @ 2021-02-11 18:31  windfall丶  阅读(871)  评论(0编辑  收藏  举报