博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
appium(3)--基本操作篇
阅读量:4068 次
发布时间:2019-05-25

本文共 3301 字,大约阅读时间需要 11 分钟。

连接设备参数

from appium import webdriverimport timefrom selenium.webdriver.support.wait import WebDriverWaitserver = 'http://127.0.0.1:4723/wd/hub'# 连接设备参数desired_caps = {  "deviceName": "192.168.3.6:5566",  "platformVersion": "9",  "platformName": "Android",  "appPackage": "com.tencent.mm",  "appActivity": "com.tencent.mm.ui.LauncherUI",  "unicodeKeyboard": "True",  "resetKeyboard": "True",  "noReset": "True"}# desired_caps常用参数:# platformName    平台名称:iOS,Android,FirefoxOS# platformVersion    设备系统版本号# deviceName    设备号  IOS:instruments -s devices,   Android: adb devices# app   安装文件路径:/abs/path/to/my.apk   or  http://myapp.com/app# appActivity  启动的Activity# appPackage  启动的包# unicodeKeyboard    unicode设置(允许中文输入)# resetKeyboard    键盘设置(允许中文输入)# noReset  是否重置手机appium setting# 远程遥控b = webdriver.Remote(server, desired_caps)

关闭应用

b.close_app()

关闭驱动

b.quit()

启动其他应用

b.start_activity("com.tencent.mobileqq","com.tencent.mobileqq.activity.SplashActivity")

安装apk

b.install_app(本地PC的apk_path)

卸载APP:

b.remove_app(app包名)

判断APP是否已安装

flag = b.is_app_installed("com.tencent.mobileqq")

文件处理

#发送文件到手机:# import base64# data = str(base64.b64encode("push 1234567".encode('utf-8')), 'utf-8')# b.push_file(r"/sdcard/test.txt",data)# '''#     参数:#         path:手机设备上的路径(如:/sdcard/a.txt)#         data:文件内数据,要求base64编码#         Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;生成的数据为byte类型,需要将byte转换回去。# '''#从手机端获取文件# phone_data = b.pull_file("/sdcard/test.txt")# print(str(base64.b64decode(phone_data), 'utf-8'))    #

获取当前屏幕内元素

print(b.page_source)

等待时间

# 1.强制等待# time.sleep(10)# 2.隐性等待# 等待元素加载出来后就可以进行下一步。# 缺点是,元素加载出来,但页面未加载完也会进行下一步b.implicitly_wait(10)# 3.显性等待# 这里表示等待10s,每隔1s去检查一次元素是否出现,出现了就执行下一步,直到30s结束后还没有出现就会抛出异常。#等待元素出现# WebDriverWait(b,timeout=10,poll_frequency=1).until(lambda x: x.find_element_by_android_uiautomator('new UiSelector().text("通讯录")'))#等待元素消失# WebDriverWait(b,timeout=10,poll_frequency=1).until_not(lambda x: x.find_element_by_android_uiautomator('new UiSelector().text("通讯录effdf")'))

常用操作

# 1.点击# ele = WebDriverWait(b,timeout=10,poll_frequency=1).until(lambda x: x.find_element_by_android_uiautomator('new UiSelector().text("通讯录")'))# ele.click()# 2.输入文本# ele2 = b.find_element_by_android_uiautomator('new UiSelector().text("搜索")')# ele2.click()# ele2.send_keys("丫头")# 3.清空# ele2.clear()# ele2.send_keys("丫头")# 4.坐标划动# phone_size = driver.get_window_size()    #分辨率# y = b.get_window_size()['height']# x = b.get_window_size()['width']# b.swipe(x * 0.5, y * 0.25, x * 0.5, y * 0.75, 500)  # 下滑# time.sleep(3)# b.swipe(x * 0.75, y * 0.5, x * 0.25, y * 0.5, 500)  # 左滑# time.sleep(3)# b.swipe(x * 0.25, y * 0.5, x * 0.75, y * 0.5, 500)  # 右滑# time.sleep(3)# b.swipe(x * 0.5, y * 0.25, x * 0.5, 0, 10000)  # 上滑# 5.获取文本# print(ele.text)# 6.获取元素属性# resourceId = ele.get_attribute("resourceId")# 7.元素划动# start_ele = b.find_element_by_android_uiautomator('new UiSelector().textContains("丫头")')# end_ele = b.find_element_by_android_uiautomator('new UiSelector().textContains("SDS")')# b.scroll(end_ele, start_ele)# 8.拖动元素# b.drag_and_drop(start_ele, end_ele)# 9.应用置于后台# b.background_app(10)# 10.获取手机时间# local_time = b.device_time# print(local_time)# 11.打开通知栏# b.open_notifications()# 12.点击home键# b.keyevent(3)# 13.获取手机当前网络# print(b.network_connection)# 14.屏幕截图# b.get_screenshot_as_file("air.png")

转载地址:http://otmji.baihongyu.com/

你可能感兴趣的文章
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>