目录: 一、appium常用api方法 二、python appium自动化断言 三、python 方法/函数封装
一、appium常用api方法
setup() :在每一条用例开始前做准备工作 teardown(): 在每条用例结束后做清除工作 setupClass(): 在全部用例开始前做一次准备工作 tearDownClass(): 在全部用例结束后做一次清除工作 self.driver.launch_app():启动被测试的应用 driver.start_activity(‘包名’,‘启动名’) 声明驱动对象:driver = webdriver.Remote(‘http://localhost:4723/wd/hub’, desired_caps) self.driver.get_screenshot_as_base64():屏幕截图 click():点击元素 scroll():从一个元素滚动到另外一个元素,driver.scroll(start_element,stop_element,1000) send_keys():发送对应数据 TouchAction(driver).long_piress(x=194, y=728, duration=1000).move_to(x=193, y=300).release().perform():长按滑动 tap():多点触屏,TouchAction action = new TouchAction(driver);action.tap(x, x).perform();//double_tap 相关操作方法链接 https://www.kancloud.cn/testerhome/appium_docs_cn/2001600 相关api官方链接: http://appium.io/docs/en/about-appium/api/
二、python appium自动化断言
常用断言方法: assertIn(a,b,msg) : 判断a是否被b包含 assertEqual(a,b,msg):如两个值相等,则pass assertNotEqual(a,b,msg) :如两个值不相等,则pass assertTrue(a, msg) : 判断a的bool值是否为true,为true既通过,否则失败 assertIs(arg1,arg2):验证arg1、arg2是同一个对象,不是则fail assertIsNone(expr, msg):验证expr是None(不存在),不是则fail
# 断言
result = driver.find_element_by_id('xxxxx').text
self.assertEqual(result, "shoes", msg='用例失败')
self.assertTrue(driver.find_element_by_id('search').is_enabled(),'search按钮不可使用,断言失败')
self.assertIsNotNone(driver.find_element_by_id('New Image'),'无拍照按钮,断言失败')
msg参数为断言失败的提示语,当断言失败时,会提示该信息
三、python 方法/函数封装
为适应一些元素的变化,当元素变化时只需要维护一个页面,或者多个场景都需要用到这个方法时,可以考虑封装,让脚本看起来更简洁 举例说明在搜索模块ui自动化时, (1)其中一个简单的基本方法封装,元素点击:
def touch_tap(self, x, y):
screen_width = self.driver.get_window_size()['width']
screen_height = self.driver.get_window_size()['height']
a = (float(x) / screen_width) * screen_width
x1 = int(a)
b = (float(y) / screen_height) * screen_height
y1 = int(b)
self.driver.tap([(x1,y1)])
在执行元素操作的.py脚本下,调用此方法
touch_tap(self,传参x,传参y)
(2)部分函数封装 基类:
def element_click(self,loc,loc_value):
self.driver.find_element(loc,loc_value).click()
def find_element(self,loc,loc_value,timeout=10,poll=0.5):
//def find_element(self,loc,timeout=10,poll=0.5):
return WebDriverWait(self.driver,timeout,poll).until(lambda x:x.find_element(loc,loc_value))
//return WebDriverWait(self.driver,timeout,poll).until(lambda x:x.find_element(*loc))
def element_input(self,loc,loc_value,text):
self.driver.find_element(loc,loc_value).send_key(text)
封装页面对象:
class test:
search_box = (By.ID, "com.xxx:id/xxxxx")
search_btn = (By.ID, "com.xxx:id/btn_searchbarxxxx")
def find_element(self, loc=search_btn):
base_method.method.find_element(self, loc)
|