appimu框架介绍02
appium-滑动swipe滑动事件:driver.swipe(startx, starty, endx, endy, duration)fromappiumimportwebdriverfromselenium.webdriver.common.byimportByimporttime des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True# 采用unicode编码格式输入}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#滑动屏幕driver.swipe(240,1189,260,563,duation2000)time.sleep(2)driver.quit()scroll滑动事件:driver.scroll(source_element, target_element)# 存储 按钮save_btnBy.XPATH,//*[text存储]save_elementget_element(driver,save_btn)# 已连接设备 按钮lj_btnBy.XPATH,//*[text已连接的设备]lj_elementget_element(driver,lj_btn)# 通过scroll来进行滑动操作driver.scroll(save_element,lj_element)drag_and_drop拖拽事件:driver.drag_and_drop(source_element, target_element)sys_btnBy.XPATH,//*[text系统]save_btnBy.XPATH,//*[text存储]driver.drag_and_drop(get_element(driver,sys_btn),get_element(driver,save_btn))appium-手势操作操作步骤第一步对象实例化TouchAction(driver)第二步调用方法如press()tap()等第三步调用perform()执行轻敲方法action.tap(element, x, y, count1)坐标和元素对象二选一count轻敲次数fromappiumimportwebdriverimporttimefromappium.webdriver.common.touch_actionimportTouchActionfromselenium.webdriver.common.byimportByfromutilsimportget_element,input_text,execute_swipe des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True# 采用unicode编码格式输入}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#上滑到顶execute_swipe(driver,top)time.sleep(2)pc_btnBy.XPATH,//*[text关于平板电脑]pc_elementget_element(driver,pc_btn)#使用手势操作轻敲实例化调用方法执行三步actionTouchAction(driver)action.tap(pc_element)action.perform()#滑动到版本号然后找到版本号轻敲三次execute_swipe(driver,top)time.sleep(2)version_btnBy.XPATH,//*[text版本号]version_elementget_element(driver,version_btn)actionTouchAction(driver)action.tap(version_element,3)action.perform()time.sleep(3)driver.quit()按下方法action.press(element, x, y)坐标和元素对象二选一抬起方法.release()等待方法.wait(3000)单位ms长按方法方法①press(element,x,y).wait(3000)单位ms方法②.long_press(element,x,y,duration3000)单位msfromappiumimportwebdriverimporttimefromappium.webdriver.common.touch_actionimportTouchActionfromselenium.webdriver.common.byimportByfromutilsimportget_element,input_text,execute_swipe des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True# 采用unicode编码格式输入}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#按下TouchAction(driver).press(x477,y488).perform()#方法①先按下等待5秒后抬起--》然后执行time.sleep(3)TouchAction(driver).press(x477,y488).wait(5000).release().perform()#方法②长按2秒后抬起--》然后执行-# TouchAction(driver).long_press(x477,y488,duration2000).release().perform()time.sleep(3)driver.quit()移动方法.move_to(x,y)#移动TouchAction(driver).press(x260,y720).wait(500).move_to(x540,y720).wait(500).move_to(x820,y720).wait(500).release().perform()第三方封装方法获取元素信息、执行滑动操作、判断元素存在defget_element(driver,element):waitWebDriverWait(driver,20,1)# 不能使用find_element_by这个方法因为不同元素使用不能定位方法*element拆包如By.id、name valueelementwait.until(lambdax:x.find_element(element[0],element[1]))returnelement#手机滑动defexecute_swipe(driver,fx,count1):wdriver.get_window_size()[width]#获取手机屏幕的宽度hdriver.get_window_size()[height]#获取手机屏幕的高度iffxtop:#上滑zb(w/2,h*0.9,w/2,h*0.1)#起始点和终止点坐标eliffxdown:zb(w/2,h/2,w/2,h/2)eliffxleft:zb(w*0.9,h/2,w*0.1,h/2)else:zb(w*0.1,h/2,w*0.9,h/2)foriinrange(count):driver.swipe(*zb,duration2000)time.sleep(1)#判断元素是否存在存在返回True否则返回Falsedefelement_is_exsit(driver,element):try:get_element(driver,element)#找到正确返回returnTrueexceptExceptionase:returnFalse#捕获异常appium-toast消息toast是一种轻量级、短暂出现的消息提示框。它的核心特点是出现时间短通常1-3秒且无法被点击web端获取toast消息步骤第一步第二步app端可同appium Inspector获取toast元素信息代码示例fromappiumimportwebdriverimporttimefromappium.webdriver.common.touch_actionimportTouchActionfromselenium.webdriver.common.byimportByfromutilsimportget_element,input_text,element_is_exsit,execute_swipe,get_toast des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.settings,#app包名appActivity:.Settings,#app界面名noReset:True,resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True,# 采用unicode编码格式输入automationName:Uiautomator2#获取toast消息配置}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#上滑到顶execute_swipe(driver,top,3)time.sleep(2)pc_btnBy.XPATH,//*[text关于平板电脑]get_element(driver,pc_btn).click()#滑动到版本号然后找到版本号轻敲三次execute_swipe(driver,top,3)time.sleep(2)version_btnBy.XPATH,//*[text版本号]version_elementget_element(driver,version_btn)actionTouchAction(driver).tap(version_element,3)action.perform()time.sleep(1)#toast消息#方法一# toast_btn By.XPATH, //*[contains(text, 开发者模式)]# if element_is_exsit(driver,toast_btn):# print(能够定位toast)# else:# print(不能定位toast)# 方法二print(get_toast(driver,开发者模式))time.sleep(3)driver.quit()第三方封装defget_toast(driver,message,timeout3):xpath//*[contains(text,{})].format(message)waitWebDriverWait(driver,timeout,1)elementwait.until(lambdax:x.find_element(By.XPATH,xpath))returnelement.textwebview操作(H5)app分为原生应用、web应用和混合应用三种手机或者模拟器上app为web或者混合应用如浏览器apk应用第一步查看模拟器或者手机上webview版本设置-》应用-》全部应用-》右上角上个点查看webview版本号–目的是pc电脑上下载chromedriver的驱动版本与之相匹配第二步下载电脑上chromedriver匹配webview的驱动https://chromedriver.storage.googleapis.com/index.html从官网下载chromedriver第三步手机或模拟器下载chrome浏览器第四步打开浏览器电脑上输入chrome://inspect 点击inspect第五步查看元素获取元素信息代码实现fromappiumimportwebdriverimporttimefromselenium.webdriver.common.byimportByfromutilsimportget_element,input_text,execute_swipe des_cap{platformName:android,#表示系统是android还是iosplatformVersion:9,#表示平台系统版本号deviceName:****,#表示设备id名称一个用四个*表示appPackage:com.android.browser,#app包名appActivity:.BrowserActivity,#app界面名noReset:True,resetkeyboard:True,# 重置设备的输入键盘unicodeKeyboard:True,# 采用unicode编码格式输入automationName:Uiautomator2,#获取toast消息配置chromedriverExecutableDir:rC:\Users\ganfe\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win#用来指定驱动的路径}driverwebdriver.Remote(http://localhost:4723/wd/hub,des_cap)#获取app是什么应用如原生、webprint(driver.contexts)driver.get(http://m.baidu.com)time.sleep(2)driver.switch_to.context(WEBVIEW_com.android.browser)#切换到web页面从print(driver.contexts)获取的页面名称time.sleep(3)driver.find_element(By.CLASS_NAME,fake-placeholder).send_keys(hello)#搜索框输入hellotime.sleep(3)driver.find_element(By.ID,index-bn).click()#点击查询hello关键字信息driver.find_element(By.XPATH,(//*[classrn-h1])[1]).click()#点击查询hello关键字信息time.sleep(5)driver.quit()