码迷,mamicode.com
首页 > 移动开发 > 详细

Appium入门案例之Android篇

时间:2021-02-15 12:27:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:alc   keycode   hub   shel   wip   移动   获取元素   screens   star   

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

 

Appium入门案例之Android篇

标签:alc   keycode   hub   shel   wip   移动   获取元素   screens   star   

原文地址:https://www.cnblogs.com/big-white/p/14398006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!