ppium使用方法说明
global driver
# 元素定位
driver.find_element_by_id("id") # id定位
driver.find_element_by_name("name") # name定位
driver.find_element_by_link_text("text") # 链接名定位
driver.find_element_by_partial_link_text("text") # 通过元素部分可见链接文本定位
driver.find_element_by_tag_name("name") # 通过查找html的标签名称定位元素
driver.find_element_by_xpath("xpath") # 路径定位
driver.find_element_by_class_name("android.widget.LinearLayout") # 类名定位
driver.find_element_by_css_selector("css") # css选择器定位
# 元素集合复数定位
driver.find_elements_by_id("id") # id元素集合
driver.find_elements_by_name("name") # name元素集合
driver.find_elements_by_link_text("text") # 链接名元素集合
driver.find_elements_by_partial_link_text("text") # 部分元素可见链接集合
driver.find_elements_by_tag_name("name") # html标签名集合
driver.find_elements_by_xpath("xpath") # 路径定位集合
driver.find_elements_by_class_name("android.widget.LinearLayout") # 类名定位集合
driver.find_elements_by_css_selector("css") # css选择器定位集合
# 输入框输入
driver.element.send_keys("中英")
# 锁定屏幕
driver.lock(5)
# 把当前应用置于后台
driver.background_app(5)
# 收起键盘
driver.hide_keyboard()
# 打开一个应用或者activity,仅安卓端
driver.start_activity('com.example.android.apis', '.Foo')
# 打开下拉通知栏 仅Android
driver.open_notifications()
# 拖动元素,将元素origin_el拖到目标元素destination_el
driver.drag_and_drop(self, origin_el, destination_el):
# 检查app是否已安装
driver.is_app_installed('com.example.android.apis')
# 安装应用到设备
driver.install_app('path/to/my.apk')
# 删除应用
driver.remove_app('com.example.android.apis')
# 模拟设备摇晃
driver.shake()
# 关闭应用
driver.close_app()
# 启动 (Launch)
# 根据服务关键字 (desired capabilities) 启动会话 (session) 。请注意这必须在设定 autoLaunch=false 关键字时才能生效。
# 这不是用于启动指定的 app/activities ————你可以使用 start_activity 做到这个效果————
# 这是用来继续进行使用了 autoLaunch=false 关键字时的初始化 (Launch) 流程的。
driver.launch_app()
# 应用重置,相当于重新卸载安装
driver.reset()
# 可用上下文 (context) 列出所有的可用上下文
# 翻译备注:context可以理解为 可进入的窗口 。例如,对于原生应用,可用的context和默认context均为NATIVE_APP。
# 详情可查看对混合应用进行自动化测试
driver.contexts
# 列出当前上下文
driver.current_context
# 切换到默认的上下文 (context)
# 将上下文切换到默认上下文
driver.switch_to.context(None)
# 获取应用的字符串
driver.app_strings
# 按键事件 (Key Event)给设备发送一个按键事件
driver.keyevent(176)
# 获取当前的activity
driver.current_activity
# 触摸动作(TouchAction) / 多点触摸动作(MultiTouchAction)
action = TouchAction(driver)
action.press(element=el, x=10, y=10).release().perform()
# 滑动(Swipe)模拟用户滑动
# 注意:appium滑动规则是x从左到右变大,y从上到下变大
driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
# 捏 (Pinch)捏屏幕 (双指往内移动来缩小屏幕)
driver.pinch(element=el)
# 放大 (Zoom)放大屏幕 (双指往外移动来放大屏幕)
driver.zoom(element=el)
# 滑动到某个元素 (Scroll To)
todo: python
# 从设备中拉出文件 (Pull File)
driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')
# 推送文件到设备中去
data = "some data for the file"
path = "/data/local/tmp/file.txt"
driver.push_file(path, data.encode('base64'))
# 断言
Assert.assertEquals("I am a div", div.getText()); //跳转到指定页面并在该页面所以用元素id进行交互
# 检查文本是否符合预期
assertEqual('I am a div', div.text)
# 输入法是否有活动 返回真假
is_ime_active(self):
# 返回当前安卓设备可用的输入法
driver.available_ime_engines(self):
# 激活安卓设备中的制定输入法
driver.activate_ime_engine(self, engine):
# 关闭当前的输入法(android)
driver.deactivate_ime_engine(self):
# 打开安卓设备上的位置定位设置
driver.toggle_location_services()
# 设置设备的经纬度
:Args:
- latitude纬度 - String or numeric value between -90.0 and 90.00
- longitude经度 - String or numeric value between -180.0 and 180.0
- altitude海拔高度- String or numeric value
用法 driver.set_location(纬度,经度,高度)
# 点击
element.click()
# 清除元素内容
element.clear()
# 返回元素的文本内容
element.text()
# 提交表单
element.submit(self):
# 元素是否可用
element.is_enabled()
# 元素是否可选
element.is_slected()
# 元素是否可见
element.is_displayed(http://www.my516.com)
# 获取元素的大小(高和宽)
new_size["height"] = size["height"]
new_size["width"] = size["width"]
driver.element.size
# 获取元素左上角的坐标
# 用法 driver.element.location
'''返回element的x坐标, int类型'''
driver.element.location.get('x')
'''返回element的y坐标, int类型'''
driver.element.location.get('y')
# 获取当前元素的截图为Base64编码的字符串
img_b64 = element.screenshot_as_base64
# 执行JS
# 在当前窗口/框架(特指 Html 的 iframe )同步执行 javascript 代码
driver.execute_script('document.title')
# 异步执行代码,其他代码在执行
driver.execute_async_script('document.title')
# 获取当前url
driver.current_url
# 获取页面源
driver.page_source
# 关闭当前窗口
driver.close()
# 关闭应用
driver.quit()
# chrome上进行测试
{
'platformName': 'Android',
'platformVersion': '4.4',
'deviceName': 'Android Emulator',
'browserName': 'Chrome'
}
# 真机测试
{
'automationName': 'Selendroid',
'platformName': 'Android',
'platformVersion': '2.3',
'deviceName': 'Android Emulator',
'app': myApp,
'appPackage': 'com.mycompany.package',
'appActivity': '.MainActivity'
}
# 多点触控
"""
规范中的可用事件有:
* 短按 (press)
* 释放 (release)
* 移动到 (moveTo)
* 点击 (tap)
* 等待 (wait)
* 长按 (longPress)
* 取消 (cancel)
* 执行 (perform)
ppium使用方法说明的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- ArcGIS 10.0紧凑型切片读写方法
首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...
- [BOT] 一种android中实现“圆角矩形”的方法
内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
随机推荐
- 浅谈Java反射机制 之 使用类的 属性、方法和构造函数
前面两篇我们总结了Java反射机制如何获取类的字节码,如何获取构造函数,属性和方法, 这篇我们将进一步验证如何使用我们获取到的属性.方法以及构造函数 1.使用 反射 获取到的 属性 import ja ...
- if you don't go after what you want, you'll never have it
conquest.n. 征服 quantitative: adj. 数量的 cellar: n. 地窖 roast. v. 烧烤 allowance. n. 津贴 drainage. n. 排水 ma ...
- new Date() 对象及方法:
在别人的代码中见了两回 new Date().toLocaleString(),查了才知道,toLocaleString()是 根据本地时间格式,把 Date 对象转换为字符串.于是好奇new Dat ...
- [19/05/13-星期一] HTML_head标签 和 body标签_文本标签
一.概念 概念:超文本标记语言 作用:需要将Java在后台根据用户的请求处理结果在浏览器显示给用户.数据已经过来了,但是显示可能比较凌乱,所以html应用而生,就像写作文要加标点看着舒服. 在浏览器中 ...
- java枚举详解
枚举的本质是类,枚举是用来构建常量数据结构的模板(初学者可以以此方式理解: public static final X=xxx),枚举的使用增强了程序的健壮性,在引用一个不存在的枚举值的时候,编译器会 ...
- 《剑指offer》面试题13 在O(1)时间删除链表节点 Java版
这道题的关键是知道找到尾节点的前一个节点必须遍历,而且这样做了之后总的时间复杂度还是O(1),以及如何不破坏链表删除一个已知节点 public ListNode delete(ListNode hea ...
- linux权限管理—基本权限
目录 Linux权限管理-基本权限 一.权限的基本概述 二.权限修改命令chmod 三.基础权限设置案例 四.属主属组修改命令chown Linux权限管理-基本权限 一.权限的基本概述 1.什么是权 ...
- linux7 grub配置文件 linux6 grub配置文件
在 grub 的 kernel 配置后面,添加 acpi_pad.disable=1 重启机器之后,开机就不会自动加载 acpi_pad 模块 一:linux6 [root@node2 ~]# cat ...
- highlight语法高亮推荐样式
最近在弄一个类似博客的东西,需要高亮显示代码,所以用了highlight.js来完成 highlight提供了不同的风格我们可以通过更改css样式表来找到适合我们的. 我罗列一部分看看有哪些风格 以下 ...
- python tkinter实时显示曲线
from tkinter import *from tkinter import ttkimport time#画窗口root = Tk()root.geometry('1000x500')root. ...