本文转自:https://www.cnblogs.com/sinder2018/articles/9699801.html

一、滑动屏幕

1、appium - 滑动屏幕

滑动接口:

swipe(起始X,起始Y,结束X,结束Y)

结束X - 起始X:X轴滑动的距离

结束Y - 起始Y:Y轴滑动的距离

Q:手机的屏幕有很多,如何兼容?

2、appium - 上下左右滑动屏幕

原理:

1、先获取设备的屏幕大小(长、宽)

2、在设置滑动的距离与屏幕大小的百分比。

3、调用滑动接口执行滑动操作

获取当前窗口大小的接口:

get_window_size:返回窗口的宽和高

滑动接口:

swipe(起始X,起始Y,结束X,结束Y)

二、appium - 模拟触屏

TouchAction类:

将一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接收到该链条后,解析各个动作,逐个执行。

短按(press)

长按(longPress)

点击(tap)

移动到(move_to)  x,y相对上一个坐标的移动位置

等待(wait)

释放(release)

执行(perform)

取消(cancel)

三、安装/卸载/关闭/启动

启动Activity:

driver.start_activity()

在当前app打开一个activity,或者新打开一个应用并启动一个activity,仅支持Android。

安装应用:

driver.install_app('path/to/my.apk')

卸载应用:

driver.remove_app('com.example.android.apis')

关闭应用:

driver.close_app()

应用是否已安装:检测应用是否已被安装。

driver.is_app_installed('com.example.android.apis')

四、拉取/推送文件

拉取(pull)文件

从设备上拉取文件。

driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')

推送(push)文件

推送文件到设备

data="same data for the file"

path="/data/local/tmp/file.txt"

driver.push_file(path,data.encode("base64"))

五、锁定/将应用切换至后台

锁定屏幕(IOS):

driver.lock(秒)

将应用切换至后台:

background_app({"timeout":secs})

将当前的应用切换到后台,然后可以让其在指定时间内回到前台,或者让它一直留在后台。

传递这个方法的参数有两种类型:

一个整型(秒):表示后台维持多久。-1表示持续置于后台。这种风格的参数已被弃用。

一个看起来像{"timeout":secs}对象。里面secs是含义和第一个类型一样的整型数字,(即表示置于后台多少秒),或者为null(表示持续置于后台)

driver.background_app(5)#置于后台,持续5秒

driver.background_app(-1)#持续置于后台

driver.background_app({"timeout":None})#持续置于后台

六、打开通知栏/摇一摇

打开通知栏:

  仅支持Android。

  driver.open_notifications()

摇一摇:

  模拟摇晃设备的操作:

  driver.shake()

七、手势操作

捏(Pinch)手势:在屏幕上使用捏(Pinch)手势

driver.pinch(element=el)

放大屏幕(Zoom):在屏幕上使用放大手势

driver.zoom(element=el)

flick(self,start_x,start_y,end_x,end_y,):从屏幕A点快速滑动到B点

drag_and_drop(self,origin_el,destination_el):把控件origin_el拖拽到destination_el的位置

八、按键操作

按键发送(Android)

driver.press_keycode(键的keycode)

九、上下文切换

1、可用的上下文(Contexts)

列出所有可用的上下文(contexts)

driver.contexts

2、当前上下文(context):列出当前的上下文(context)

driver.current_context

3、切换至默认的上下文(context)

切换回默认的上下文(context).(译者注:一般就是原生上下文“native_app")

driver.switch_to.context(None)

4、当前Activity:获取当前的Activity。仅支持Android.

driver.current_activity

5、当前包名(package):获取当前包名(package)。仅支持Android.

driver.current_package

十、H5识别 - webview

tips:

1、在手机\模拟器中点击关于手机的版本号5下,出来开发者选项

2、在开发者选项中勾选上显示布局界面

3、如果是HTML的界面,那界面不会有布局界面显示,如果有则说明是native的界面

adb shell dumpsys activity | find "mFocusedActivity" ----查看前台应用activity名

十一、常见问题

contexts只能获取NATIVE_APP,无法获取WEBVIEW

使用uiautomatorview定位元素,显示class值为:android.webkit.WebView

但是driver.contexts只打印出了"NATIVE_APP"

解决方法:

1、APP打包的时候需要开启webview的debug属性setWebContentDebuggingEnabled(true)

这个直接让开发加上就好

2、模拟器的contexts中有webview,但是有些手机没有,官方给出的答案是:需要将手机root,然后再去获取

appium自动化测试- 元素操作的更多相关文章

  1. Appium移动端自动化测试--元素操作与触摸动作

    常见自动化动作支持 click sendKeys swipe touch action 元素操作 1.click()点击操作 也可以用tab实现点击操作 driver.find_element_by_ ...

  2. python - web自动化测试 - 元素操作 - 窗口切换

    # -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 元素操作-切换.py @ide: PyCharm Community ...

  3. python - web自动化测试 - 元素操作 - 鼠标键盘

    # -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: 鼠标操作.py @ide: PyCharm Community Edi ...

  4. python - web自动化测试 - 元素操作 - 等待

    # -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: wait.py @ide: PyCharm Community Edi ...

  5. python - web自动化测试 - 元素操作 - 定位

    # -*- coding:utf-8 -*- ''' @project: web学习 @author: Jimmy @file: find_ele.py @ide: PyCharm Community ...

  6. Python+Appium自动化测试(9)-自动选择USB用于传输文件(不依赖appium对手机页面元素进行定位)

    一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选 ...

  7. Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法

    在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...

  8. Appium -选择、操作元素

    选择界面元素 操作元素(点击.输入字符.拖拽.获取页面元素的各种属性) 根据Appium获取的数据进行分析和处理 desired_capabilities 查看appPackage 和appActiv ...

  9. Appium之选择/操作元素

    Appium是如何选择.操作元素的呢? appium自动化  ------  选择界面 元素 操作元素  ------- ① 点击 ② 输入字符 ③ 拖拽 ④ 获取页面元素的各种属性 根据appium ...

随机推荐

  1. python 中的__str__ 和__repr__方法

    看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >> ...

  2. Linux 下查看操作系统信息

    1.uname -a  可显示电脑以及操作系统的相关信息. 2.输入"cat /proc/version",说明正在运行的内核版本. 3.输入"cat /etc/issu ...

  3. 大数据学习笔记之Hadoop(三):MapReduce&YARN

    文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...

  4. charles抓包看性能数据

    1.优化某个接口或加载速度(H5加载速度慢) 抓包看Overview ①看Duration,就是接口的加载时间 ②看Latency,就是延时一端传播到另一端所花费的时间:一般和网络有关:可以综合Dur ...

  5. HTTP面试题目

    转自:http://m.blog.csdn.net/zhangliangzi/article/details/51336564 1.说一下什么是Http协议? 对器客户端和 服务器端之间数据传输的格式 ...

  6. 插件化框架解读之四大组件调用原理-Service(三)下篇

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本文将继续通过Service调用原理来解读Replugin插件化 ...

  7. shape和reshape

    import numpy as np a = np.array([1,2,3,4,5,6,7,8]) #一维数组 print(a.shape[0]) #值为8,因为有8个数据 print(a.shap ...

  8. php yield关键字以及协程的实现

    php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还 ...

  9. sublime text的快捷键

    Ctrl + Shift + P:调出命令板(Command Palette)Ctrl + `:调出控制台Ctrl + Enter:在当前行下面新增一行然后跳至该行Ctrl + Shift + Ent ...

  10. 转载:Think in AngularJS:对比jQuery和AngularJS的不同思维模式(大漠穷秋)

    导言 stackoverflow上有一个人问了一个问题:如果我有jQuery背景,我应该如何切换到AngularJS的思维模式? 有一个回复非常经典,获得了两千多票. 为了让国内开发者也能领略到其中的 ...