Appium自动化测试

1、adb相关
1、配置adb环境

路径为:C:\Users\fan\AppData\Local\Android\android-sdk\platform-tools

2、安装应用命令

adb install apk_path
3、adb构成

Client端 发送adb命令的电脑

Daemon守护进程,安卓手机中接受adb命令的

Server端 手机中管理通信的

4、工作原理

client发送命令给server

server将命令交给Daemon

daemon执行命令

执行结果返回给server端

执行结果发送给client端

5、常用命令

获取包名,界面名

adb shell dumpsys window windows | grep/findstr mFocusedApp
文件传输

发送数据到手机

adb push 电脑文件路径 手机文件夹路径
从手机获得数据

adb push 手机文件路径 电脑文件路径
获取app启动时间

adb shell am start -w 包名/启动名
转存失败重新上传取消

获取手机日志:用于定位bug ❤️

adb logcat
安装app

adb install 路径/xx.apk
卸载app

adb uninstall 包名
获取电脑连接到的设备

adb devices
进入安卓系统命令行

adb shell
启动 关闭adb服务器

adb start-server
adb kill-server
查看帮助

adb --help
2、APPium自动化测试框架
可以测试原生应用、网页应用、以及混合应用。

环境搭建
安装appium-desktop应用

安装Appium-python-client库

关系:python代码-》Appium-python库-》Appium-》手机

使用方法
from appium import webdriver
from time import sleep

desired_caps = dict()
#平台名字,大小写不敏感
desired_caps[‘platformName’] = ‘Android’
#系统版本
desired_caps[‘platformVersion’] = ‘5.1’
#设备名字
desired_caps[‘deviceName’] = ‘192.168…’
#要打开的app包名
desired_caps[‘appPackage’] = ‘com.android.settings’
#要打开的界面名
desired_caps[‘appActivity’] = ‘.Settings’

driver = webdriver.Remote(‘http://localhost:4723/wd/hub’,desired_caps)

sleep(5)
driver.quit()
功能介绍
基本操作

启动其他app

driver.start_activity(包名,界面名)
获取包名和界面名

driver.current_package
driver.current_activity
关闭app和驱动对象

driver.close_app() #回到桌面,driver还在
driver.quit() #直接退出driver
安装和卸载app

#安装
driver.install_app(app_path)
#卸载
driver.remove_app(“包名”)

#判断是否安装
driver.is_app_installed()

将应用置于后台

#等待一定时间重新打开
driver.background_app(seconds)
3、UIAutomatorViewer

windows:android-sdk tools/bin/uiautomatorviewer.bat

获取页面元素的信息,方便后期定位

转存失败重新上传取消

元素定位
步骤:

打开uiautomotorviewer

打开手机或模拟器

通过ui工具获取元素的note detail信息

通过元素定位api进行定位

对元素进行相关操作

定位一个元素

类比selenium

driver.find_element_by_id(id_value)
driver.find_element_by_class_name(class_name_value)
driver.find_element_by_xpath(id_value)
定位一组元素

driver.find_elements_by_id(id_value)
driver.find_elements_by_class_name(class_name_value)
driver.find_elements_by_xpath(id_value)

注意点

NoSuchElementException

元素等待
元素不能及时出现原因:

网速

服务器错误

电脑配置

隐式等待

所有元素等待时间为同一个值

driver.implicitly_wait(5) #等待一定时间
显示等待

针对所有定位元素的时间设置不同的时间

wait = WebDriverWait(driver,5)
button = wait.until(find_element)
点击、输入、清空
点击

element.click()
输入 清空

element.send_keys()
element.clear()
输入中文
desire_caps[‘unicodeKeyboard’] = True
desire_caps[‘resetKeyboard’] = True
获取元素文本内容
element.text
获取元素位置和大小
element.location #获得字典 [x,y] int类型
element.size
获取元素的属性值
element.get_attribute(value) #value为元素的属性名
滑动和拖拽事件
driver.swipe(start_x,start_y,end_x,end_y,duration=None)
#持续时间越长,惯性越小
滑动时的误差现象(即惯性):cpu相关

scroll滑动事件
driver.drag_and_drop(origin_el,des_el)
#从一个元素滑动到另一个元素,没有惯性
driver.scroll(origin_el,des_el)
#从一个元素滑动到另一个元素,有惯性
4、高级手势
轻敲
1、创建touchAction对象

2、调用对象想执行的手势

3、通过perform()执行

#传入element或者坐标,count表示执行次数,多次点击
TouchAction(driver).tap(element=None,x=None,y=None,count = 1).perform()

wlan_button = driver.find_element_by_xpath(“”)
touch_action = TouchAction(driver)
touch_action = touch_action.tap(wlan_button)
#or touch_action = touch_action.tap(x = ,y = )
touch_action.perform()
按下和抬起
TouchAction(driver).press(el=None,x=None,y=None).perform()

el: 元素

x,y :坐标值

TouchAction(driver).press(“”).perform()
time.sleep(2)
TouchAction(driver).press(“”).release().perform()#释放
等待
模拟手指等待,比如按下等待5秒钟之后再抬起

TouchAction(driver).wait(ms=0).perfrom()

ms: 暂停的毫秒数

TouchAction(driver).press(“”).wait(2000).perform()#释放
长按
模拟手指对元素或者坐标的长按操作,比如按住菜单

TouchAction(driver).long_press(el=None,x=None,y=None,duration=1000).perform()

el: 元素

移动

move_to(x=None,y=None)

连个多个move_to完成画线

5、手机操作API
获取手机分辨率
driver.get_window_size()

截图
driver.get_screenshot_as_file(“路径”)

获取手机网络
driver.network_connection

返回数字 1:飞行模式 2:只开wifi 4:只开流量 6:网络全开

driver.set_network_connection(connection_type)

设置网络

发送键到设备
模拟返回键、home键

driver.press_keycode(keycode,metastate=None)

keycode可以google android keycode

操作通知栏
点击通知消息

driver.open_notifications()

关闭通知栏,可以模拟向上滑动,或者按返回键
————————————————
参考:https://blog.csdn.net/fan_nlnl/article/details/104993188

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值