appium相关方法
(1)#**scroll(起始元素,结束元素)**
driver.scroll(origin_el,destination_el)
(2)#**屏幕向右滑动**
def swipRight(driver,t=1000):
l=getSize(driver)
x1=int(l[0]*0.05)
y1=int(l[1]*0.5)
x2=int(l[0]*0.75)
driver.swipe(x1,y1,x2,y1,t)
(3)#**获得屏幕大小宽和高
def getSize(driver):
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y)
(4)#**MultiAction()
MultiAction().add()添加多个TouchAction操作,最后调用perform()执行
action0 = TouchAction().tap(el)
action1 = TouchAction().tap(el)
MultiAction().add(action0).add(action1).perform()
(5)#**driver.swipe(x1, y1, x2, y2,duration) **从坐标(x1,x2)滑动到坐标(x2,y2),duration非必填项,滑动时间**(滑动的坐标不能超过屏幕的宽高)
#**driver退出、卸载、安装
driver.quit()
driver.install_app(apk path):安装app
driver.remove_app(app package name):卸载app
driver.is_app_installed(app package name):判断app是否已安装,已安装返回true
(6)#**关闭和启动app
driver.close_app()
driver.launch_app()
如需跨app执行用例,则可使用start_activity(self, app_package, app_activity, **opts)方法
(7)#**将app放置后台n秒,n秒后,页面自动回到前台
driver.background_app( n )
#获取当前页面 和 启动指定页面
driver.current_activity()
driver.start_activity(包名,activity名)
当前页面是登录页就登录,否则先打开登录页再登录
(8)#**等待某个页面出现
driver.wait_activity('.Activity',3,1):等待3秒,每1秒检查一次,页面出现则返回true
(9)#**截屏函数
import time
from appium import webdriver
def captureScreen(self,filename):#传递图片文件名
(10) #获取系统时间并转换格式作为图片名,20190830161035
date=time.strftime("%Y%m%d%H%M%S",time.localtime())
(11) #拼接存储路径,电脑路径+时间+图片名+.png
storeFile='E:/图片/'+date+filename+'.png'
self.driver.get_screenshot_as_file(storeFile)
(12)#******放大图片*****
srcHeight=self.driver.get_window_size()['height']
srcWidth=self.driver.get_window_size()['width']
(13)#设置MultiAction,可以多点触控
multiAction=MultiAction(self.driver)
#设置两个“单点”动作
t1=TouchAction(self.driver)
t2=TouchAction(self.driver)
#分成两点按住相片0.25s
t1.long_press(imageView,srcWidth/2,srcHeight/2 - 100).wait(250).move_to(imageView,srcWidth/2,srcHeight/2-130).release()
t2.long_press(imageView,srcWidth/2,srcHeight/2 + 100).wait(250).move_to(imageView,srcWidth/2,srcHeight/2+125).release(
#Java方法,multiAction.add(t1).add(t2)
multiAction.add(t1)
multiAction.add(t2)
multiAction.perform()
(14)#拖拽函数
self.driver.drag_and_drop(musicBox,musicList)
(15)#TouchAction对象包含(tab)、press(短按)、move_to(滑动到某个坐标)等方法
通过TouchAction对象,添加tap、move_to等操作,然后perform()执行,可以实现解锁屏幕等功能
规范中的可用事件有:
* 短按 (press)
* 释放 (release)
* 移动到 (moveTo)
* 点击 (tap)
* 等待 (wait)
* 长按 (longPress)
* 取消 (cancel)
* 执行 (perform)
(16)#设置网络类型setNetworkConnection(bitmask掩码)*
例如:设置网络类型为只开wifi
driver.set_network_connection(2)#1 (飞行模式)4 (只有数据连接)6 (开启所有网络) |
#**newCommandTimeout:**设置未接收到新命令的超时时间,默认60s
如果60s内没有接收到新命令,appium会自动断开连接,可延长接收新命令的超时时间
desired_caps["newCommandTimeout"]=1800
(17)#test suite测试套件
TestSuite(测试套件):实际上就是测试集,测试用例的集合,将我们需要执行的测试用例添加到测试集中,然后再一键执行。
TextTestRunner :用来执行测试用例集,TestCase和TestSuite本身也有自己执行用例的方法,不过TextTestRunner在实际应用中优于它们,使用方法:
1) suite = unittest.TestSuite() #TestSuite是个类,首先将它实例化,创建一个对象,然后用对象调用它的 addTest 方法
suite.addTest(TestMath('test_add')) # 添加测试用
suite.addTest(TestMath('test_sub'))
suite.addTest(TestMath('test_multiply'))
suite.addTest(TestMath('test_divide')) # 添加测试用例
run = unittest.TextTestRunner(verbosity=2)# 创建个TextTestRunner对象,用对象调用run()方法,注意对象传参 verbosity=2 可以控制测试报告的详细程度,verbosity 有 0 1 2 三个级别,verbosity=2 的输出最详细
run.run(suite) # 执行 suite 用例集
2)suite = unittest.TestLoader().loadTestsFromTestCase(ComplexAndroidTests)#
ComplexAndroidTests测试类
unittest.TextTestRunner(verbosity=2).run(suite)
(18)#******键盘操作*****
driver.keyevent() #括号里填入的是手机物理按键的数字代号
driver.press_keycode()# 括号里填入的是键盘按键的数字代号
参考博客:https://www.cnblogs.com/xiaobaixiaobai/p/10760943.html