1、导入driver对象

from appium import webdriver

2、声明手机驱动对象

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0.1'
desired_caps['deviceName'] = '127.0.0.1:7555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['app'] = './xx.apk'  #取指定路径下的apk
driver=webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)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    键盘设置(允许中文输入)

3、关闭当前操作的APP

driver.close_app()
'''运行该命令后会断开设备连接,因此可用driver.keyevent(3)(点击home键)代替'''

4、启动其他APP

driver.start_activity("包名",“启动名”)

5、关闭驱动对象,同时关闭所有关联的APP

driver.quit()

通过工具获取APP元素:
进入D:\application\android-tool\android-sdk_r24.4.1-windows\android-sdk-windows\tools目录下,运行uiautomatorviewer.bat
点击device screenshot with compressed…可获取当前正在连接的设备的当前页面

基础操作:
安装apk: driver.install_app(本机apk_path)
卸载APP:driver.remove_app(app包名)
判断APP是否已安装:dirver.is_app_installed(“包名”)

发送文件到手机:

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

从手机拉取文件:

phone_data = driver.push_file("/sdcard/push.txt")
print(str(base64.b64decode(phone_data), 'utf-8'))

获取当前屏幕内元素内容:

driver.page_source

(返回当前页面的文档结构,判断特定元素是否存在)

初始化操作

def init_driver():desired_caps = {}#   系统desired_caps['platformName'] = 'Android'#   版本desired_caps['platformVersion'] = '6.0.1'#   设备号desired_caps['deviceName'] = '127.0.0.1:7555'#   包名desired_caps['appPackage'] = 'com.android.settings'#   启动名desired_caps['appActivity'] = '.Settings'#   允许输入中文desired_caps['unicodeKeyboard'] = Truedesired_caps['resetKeyboard'] = True# desired_caps['app'] = './xx.apk'#   声明手机驱动对象driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)return driver

定位方式:(基于当前屏幕范围内可见元素)
1、id

driver.find_element_by_id("com.android.settings:id/search").click()

2、class

driver.find_element_by_class_name("android.widget.ImageButton").click()

3、xpath

xpath_value = "//*[contains(@class,'android.widget.TextView')]"

设置显式等待

WebDriverWait(driver, timeout=5, poll_frequency=0.5).until(lambda x: x.find_element_by_class_name("android.widget.LinearLayout"))

打印当前时间

print(time.strftime("%H:%M:%S", time.localtime()))

常用方法:
点击 click()
输入 send_keys()
清空 clear()
获取文本 text
获取属性值 get_attribute(value)
value=‘name’ 返回content-desc / text属性值
value=‘text’ 返回text属性值
value=‘className’ 返回class属性值,API>=18才支持
value='resourceId’返回resource-id属性值,API>=18才支持
获取坐标 location
获取包名 current_package
获取启动名 current_activity

 # 按坐标滑动driver.swipe(101, 1064, 101, 573, 5000)# 按元素滑动start_ele = driver.find_elements_by_xpath("//*[contains(@text,'年轻人')]")end_ele = driver.find_elements_by_xpath("//*[contains(@text,'为什么大家')]")driver.scroll(start_ele, end_ele)# # 拖动driver.drag_and_drop(start_ele, end_ele)# 应用置于后台driver.background_app(10)# 获取手机时间local_time = driver.device_timeprint(local_time)# 获取手机分辨率phone_size = driver.get_window_size()

键值:

 '''keyevent(keycode, metastate=None):参数:keycode:发送给设备的关键代码metastate:关于被发送的关键代码的元信息,一般为默认值'''# 音量减for i in range(0, 3):driver.keyevent(5)# 打开通知栏driver.open_notifications()# 点击home键driver.keyevent(3)# 获取手机当前网络print(driver.network_connection)'''Possible values:Value (Alias)      | Data | Wifi | Airplane Mode-------------------------------------------------0 (None)           | 0    | 0    | 01 (Airplane Mode)  | 0    | 0    | 12 (Wifi only)      | 0    | 1    | 04 (Data only)      | 1    | 0    | 06 (All network on) | 1    | 1    | 0These are available through the enumeration `appium.webdriver.ConnectionType`'''# 设置网络(需要root权限)driver.set_network_connection(1)# 屏幕截图driver.get_screenshot_as_file("../screenshot_page/air.png")

appium基本操作相关推荐

  1. Appium对app的基本操作

    1.APP元素定位操作API 1.Appium常用元素定位方式 name value id id属性值 class class属性值 xpath xpath表达式 2.前置代码 from appium ...

  2. appium webdriver 基本操作及小例子等

    #encoding=utf-8 ''' ''' #driver新建 driver=webdriver.Remote('http://localhost:4723/wd/hub',caps)#关闭dri ...

  3. Appium自动化测试(五)——PO模式(一):短信案例

    PO模式:Page Object,PO模式是自动化测试项目开发实践的最佳设计模式之一. 核心思想:通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素位置发生变化,只需要调整页面封装的代码,提高 ...

  4. 详细说说Mac下搭建Appium环境

    appium服务端的版本分为命令行版.桌面版,两者有些区别,两者都要安装 01 appium ios自动化环境搭建 首先必须有mac电脑,在app store中搜索xcode并安装,安装完成后一定记得 ...

  5. 如何在Docker中使用安卓模拟器+Appium

    https://hub.docker.com/r/budtmo/docker-android-x86-9.0 docker pull budtmo/docker-android-x86-9.0 htt ...

  6. Appium Inspector使用

    Appium 1.15版本 Appium Inspector是appium自带的一个元素定位工具.启动 Inspector 这个查看元素工具,首先要确保 Appium Server 要运行起来. 前提 ...

  7. 【移动测试Android】元素定位|基本操作|手势操作

    [移动测试Android]元素定位|一些基本操作 元素定位 元素定位工具 UIAutomatorView appium desktop inspector weditor 基本操作 基础api 输入文 ...

  8. 全网最详细的Mac下搭建Appium环境文档,没有之一

    appium服务端的版本分为命令行版.桌面版,两者有些区别,两者都要安装 01.appium ios自动化环境搭建 首先必须有mac电脑,在app store中搜索xcode并安装,安装完成后一定记得 ...

  9. web test automation test / QTP / IBM RFT / Selenium IDE / IOS appium / AU3

    Selenium WebDriver / Selenium IDE http://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ S ...

最新文章

  1. 数据库链接池终于搞对了,这次直接从100ms优化到3ms!
  2. javascript之parseInt的用法分析
  3. 使用DatagramSocket发送、接收数据(Socket之UDP套接字)
  4. Redis 哈希(Hash)
  5. 快速消费品行业的营销费用的管理(2)----营销费用的分类
  6. 在Web中实现C/S模式的Tab
  7. 打印出数字字符串的偶位数
  8. PMON和SMON的功能
  9. javascript Blob
  10. [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
  11. 用计算机弹奇迹再现谱子,《原神》奇迹再现乐谱分享 风物之诗琴乐谱分享
  12. php_D3_“简易聊天室 ”实现的关键技术 详解
  13. 力扣题目系列:860. 柠檬水找零
  14. android imagebutton 点击效果缩小,ImageButton和ZoomButton使用
  15. HBase二级索引Solr
  16. 谷歌应用商店开发者注册
  17. C——识别键盘按下模拟键盘按下
  18. Android N开发 你需要知道的一切
  19. 【soft6星评论】伯俊软件借用中台撬动新一轮互联网化
  20. 美女硕士养猪记:如何用大数据激活一头猪

热门文章

  1. WeifenLuo.WinFormsUI.Docking.dll使用
  2. WebServer【笔记2】
  3. 选择排序算法与示例详解(c语言)
  4. 大作业论文之基于迁移学习的图像预测研究
  5. java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理
  6. 基于oracle数据库系统下的内部审计管理信息系统研发
  7. International Journal of Remote Sensing投稿经历
  8. 计算序列 1 + 2 + 3 + ... 的前N项之和。
  9. 对话系统 | (6) 医疗健康领域的短文本理解
  10. Framework7中文教程-中文演示DEMO