appium基本操作
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基本操作相关推荐
- Appium对app的基本操作
1.APP元素定位操作API 1.Appium常用元素定位方式 name value id id属性值 class class属性值 xpath xpath表达式 2.前置代码 from appium ...
- appium webdriver 基本操作及小例子等
#encoding=utf-8 ''' ''' #driver新建 driver=webdriver.Remote('http://localhost:4723/wd/hub',caps)#关闭dri ...
- Appium自动化测试(五)——PO模式(一):短信案例
PO模式:Page Object,PO模式是自动化测试项目开发实践的最佳设计模式之一. 核心思想:通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素位置发生变化,只需要调整页面封装的代码,提高 ...
- 详细说说Mac下搭建Appium环境
appium服务端的版本分为命令行版.桌面版,两者有些区别,两者都要安装 01 appium ios自动化环境搭建 首先必须有mac电脑,在app store中搜索xcode并安装,安装完成后一定记得 ...
- 如何在Docker中使用安卓模拟器+Appium
https://hub.docker.com/r/budtmo/docker-android-x86-9.0 docker pull budtmo/docker-android-x86-9.0 htt ...
- Appium Inspector使用
Appium 1.15版本 Appium Inspector是appium自带的一个元素定位工具.启动 Inspector 这个查看元素工具,首先要确保 Appium Server 要运行起来. 前提 ...
- 【移动测试Android】元素定位|基本操作|手势操作
[移动测试Android]元素定位|一些基本操作 元素定位 元素定位工具 UIAutomatorView appium desktop inspector weditor 基本操作 基础api 输入文 ...
- 全网最详细的Mac下搭建Appium环境文档,没有之一
appium服务端的版本分为命令行版.桌面版,两者有些区别,两者都要安装 01.appium ios自动化环境搭建 首先必须有mac电脑,在app store中搜索xcode并安装,安装完成后一定记得 ...
- 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 ...
最新文章
- 数据库链接池终于搞对了,这次直接从100ms优化到3ms!
- javascript之parseInt的用法分析
- 使用DatagramSocket发送、接收数据(Socket之UDP套接字)
- Redis 哈希(Hash)
- 快速消费品行业的营销费用的管理(2)----营销费用的分类
- 在Web中实现C/S模式的Tab
- 打印出数字字符串的偶位数
- PMON和SMON的功能
- javascript Blob
- [转载] python不允许使用关键字_Python中关键字global与nonlocal的区别
- 用计算机弹奇迹再现谱子,《原神》奇迹再现乐谱分享 风物之诗琴乐谱分享
- php_D3_“简易聊天室 ”实现的关键技术 详解
- 力扣题目系列:860. 柠檬水找零
- android imagebutton 点击效果缩小,ImageButton和ZoomButton使用
- HBase二级索引Solr
- 谷歌应用商店开发者注册
- C——识别键盘按下模拟键盘按下
- Android N开发 你需要知道的一切
- 【soft6星评论】伯俊软件借用中台撬动新一轮互联网化
- 美女硕士养猪记:如何用大数据激活一头猪
热门文章
- WeifenLuo.WinFormsUI.Docking.dll使用
- WebServer【笔记2】
- 选择排序算法与示例详解(c语言)
- 大作业论文之基于迁移学习的图像预测研究
- java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理
- 基于oracle数据库系统下的内部审计管理信息系统研发
- International Journal of Remote Sensing投稿经历
- 计算序列 1 + 2 + 3 + ... 的前N项之和。
- 对话系统 | (6) 医疗健康领域的短文本理解
- Framework7中文教程-中文演示DEMO