滑动操作与拖拽操作
# 滚动处理 # elementObj1 目标滚动元素,elementObj2 起始滚动元素 # 底层通过action操作,与web ui相反,origin_el为目标元素,destination_el为起始元素 # 通过模拟手势可以看出 从下面的元素移动到上面的元素 # action.press(origin_el).move_to(destination_el).release().perform() # web elementObj1为要移动的元素 elementObj2为移动到某个元素 # action.click(elementObj1).move_to_element(elementObj2).release().perform() driver.scroll(elementObj1, elementObj2) #通过坐标实现滑屏操作 # 从手机的左上角开始,横坐标为x轴,纵坐标为y # 分辨率不同,坐标不相同,所以需要根据屏幕的大小做比例运算 driver.swipe(start_x, start_y, end_x, end_y,duration=None) # 拖拽 # elementObj1源元素,elementObj2目标元素 # 通过long_press实现 driver.drag_and_drop(elementObj1, elementObj2) # 多点触控 模拟手指点击 # tap模拟按住坐标多少秒,[(x,y)] 多个坐标则写多个元祖。参数2为按住多少秒。ms(毫秒)为单位 driver.tap([(x, y)], 5000)
# 通过坐标实现滑屏操作---------------------------------------- size = driver.get_window_size()#查看屏幕大小 # print(size) width = size.get('width') height = size.get('height') y1 = height * 0.8#标记滑动起始位置 x1 = width * 0.5 y2 = height * 0.2#标记滑动最终位置 x2 = width * 0.5 driver.swipe(x1,y1,x2,y2)
操作APP
# 返回是否安装了对应包名的App True 或者 False driver.is_app_installed('com.syqy.wecash') # 关闭初始化信息中的App driver.close_app() # 启动初始化信息中的App driver.launch_app() # 安装app 参数为软件的绝对路径 driver.install_app(r'C:UsersjhouyafanDesktop esterappUiwecash.apk') # 卸载app 参数接收appPackageName driver.remove_app('com.syqy.wecash') # 获取当前打开的app名 driver.current_activity # 启动某一个包的,某一个入口 # 参数接受appPackage,appActivity # 可以省略多个步骤直接到达指定测试的位置 driver.start_activity('com.android.browser','.BrowserActivity') # 每隔0.5秒判断一次当前的app名称是否是activityName # WebDriverWait driver.wait_activity('activityName', 5, 0.5) # 将启动的app退出到后台,多少秒后在切回app driver.background_app('m') # 清除应用数据缓存,相当于卸载重装 driver.reset()
操作混合App的H5页面
# 操作混合app的H5 driver.find_element_by_id('com.android.browser:id/url').send_keys('https://m.baidu.com/?from=844b&vit=fps')#打开浏览器,输入网址 time.sleep(2) driver.press_keycode(66)#这个keycode码可以使用百度搜索,66是代表回车 # 打开原生app时,想操作内置的H5页面,需要先切换webview,只要切换进h5页面后就和web自动化一样 print(driver.contexts)#查看内置H5地址 #切换webview,必须开发开启debug模式 driver.switch_to.context('WEBVIEW_com.android.browser')