服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用 HTTP 协议进行传递,文件传输使用 FTP,邮件传递使用 SMTP。上述的三种类型的协议都处于网络模型中的应用层。除了应用层的常用协议之外,对于传输层的 TCP、UDP 协议,以及 Restful 架构风格、RPC 协议等等基础网络知识要有一定的了解和认知。
工作中我们经常需要对应用的页面进行手势操作,比如滑动、长按、拖动等,AppiumDriver 为我们提供一个模拟手势操作的辅助类 TouchAction,可以通过它对手机屏幕进行手势操作。
具体用法参见链接:https://ceshiren.com/t/topic/3275
导入TouchAction
from appium.webdriver.common.touch_action import TouchAction
常用的手势操作
TouchAction 提供的常用的手势操作有如下操作:
- Press 按下
-
- release 释放
-
- move_to 移动
-
- tap 点击
-
- longPress 长按
-
- wait 等待
-
- cancel 取消
-
- perform 执行
press
- perform 执行
TouchAction 提供的 press( ) 方法可以实现对元素或者坐标的按下操作。通常会结合 release( ) 方法实现对某个元素的点击(包括按下和抬起两个动作)。
在某个控件上执行 press 操作,用法如下:
press(WebElement el)
在坐标为(x,y)的点执行 press 操作,用法如下:
press(int x, int y)
release
释放操作,可以结合其它的事件使用。代表该系列动作的一个结束标志。在某个控件上执行释放操作,用法如下:
release(WebElement el)
也可以在上一个操作结束之后执行 release,不添加任何参数,用法如下:
release()
move_to
以控件为目标,从一个点移动到该目标上,用法如下:
move_to(WebElement el)
以(x,y)点为目标,从一个点移动到该目标,用法如下:
move_to(WebElement el, int x, int y)
tap
在某个控件的中心点上点击一下,用法如下:
tap(WebElement el)
以(x,y)坐标点为目标点击,用法如下:
tap(int x, int y)
以控件 el 的左上角为基准,沿着 x 轴向右移动 x 单位,沿着 y 轴向下移动 y 单位。在该点上点击,用法如下:
tap(WebElement el, int x, int y)
longpress
长按某一控件,用法如下:
long_press(WebElement el)
以(x,y)点为目标实现长按,用法如下:
long_press(int x, int y)
在控件的左上角的 x 坐标偏移 x 单位,y 左边偏移 y 单位的坐标上长按。用法如下:
long_press(WebElement el, int x, int y)
wait
等待,单位为毫秒。可以在操作事件的过程中,短暂的停留几秒再继续操作。用法如下:
wait(long timeout)
cancel
可以取消执行事件链中的事件,用法如下:
cancel()
perform
执行事件链中的事件,一般最后会调用这个方法,顺序执行事件链中的动作。用法如下:
perform()
打开测试应用,从元素 “Views” 文本滑动到 “Accessibility” 元素,创建一个测试文件 test_touchaction.py,代码如下:
测试 app 官方下载地址:https://github.com/appium/appium/tree/master/sample-code/apps
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
class TestTouchAction():
def setup(self):
caps = {}
caps['platformName'] = 'Android'
caps['platformVersion'] = '6.0'
caps['deviceName'] = 'emulator-5554'
caps['appPackage'] = 'io.appium.android.apis'
caps['appActivity'] = 'io.appium.android.apis.ApiDemos'
self.driver = webdriver.Remote(\
"http://127.0.0.1:4723/wd/hub", caps)
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_touchaction_unlock(self):
# 点击 Views
el1 = self.driver.find_element_by_accessibility_id(
"Views")
# 点击 Accessibility
el2 = self.driver.find_element_by_accessibility_id(
"Accessibility")
# TouchAction 滑动操作
action = TouchAction(self.driver)
action.press(el1).wait(100).move_to\
(el2).wait(100).release().perform()
上面代码可以看出,首先定位两个元素 el1 与 el2 ,分别作为滑动过程中起点元素和终点元素,将我们滑动的起点元素与终点元素找到之后,创建一个 TouchAction 对象,调用里面的 press( ) 方法实现起点元素的点击,使用 wait( ) 方法在事件之间添加等待,使用 move_to( ) 方法完成手势的移动操作,然后调用 release( ) 方法来完成手势的抬起,最后调用 perform( ) 方法对添加到 TouchAction 中的事件链顺序执行。
⬇️ 点击“阅读原文”,提升测试核心竞争力!
获取更多相关资料+v~ ceshiren001
获取更多技术文章分享
网络协议介绍
在了解具体的协议之前,需要先了解 OSI 七层模型、TCP/IP 四层模型、五层体系结构这三种不同的网络模型。
网络协议模型对比图:

- OSI 参考模型是一个在制定协调进程间通信标准时所使用的概念性框架,它并不是一个标准。
-
- TCP/IP 四层模型是网际网络的基础通信架构。常视为是简化的七层 OSI 模型。
-
- 五层协议是 OSI 和 TCP/IP 的综合,实际应用还是 TCP/IP 的四层结构。
-
- TCP/IP 协议栈是对应 TCP/IP 四层模型所使用的具体的网络协议
-
TCP协议
TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 协议的工作方式为在建立连接的时候需要进行“三次握手”,终止连接时需要进行“四次挥手”。“三次握手”和“四次挥手”是 TCP 协议的重要知识点,在后面的章节会通过实战和理论结合,具体介绍这一重要的知识点。
TCP 协议的面向连接、错误重传、拥塞控制等特性,适用于可靠性高的场景,比如涉及用户信息的数据传输。
UDP协议
UDP 协议一旦把应用程序发给网络层的数据发送出去,就不保留数据备份。它仅在 IP 数据包的头部加入复用和数据校验字段。所以 UDP 常常被认为是不可靠的数据包协议。
UDP 协议的不需要提前建立连接、实现简单的特性,非常适用于实时性高的场景,比如流媒体、在线游戏等。
HTTP协议
HTTP 协议是接口测试中最常见的协议,用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。客户端向服务端发送 HTTP 请求,服务端则会在响应中返回所请求的数据。在测试过程中,常常需要校验请求和响应结果,所以了解 HTTP 协议,对于接口测试来说,是重中之重。
在后面章节将会具体介绍 HTTP、HTTPS 协议的区别,以及 HTTP 协议的基础知识信息。
RESTful架构
起源
Roy Thomas Fielding 博士于 2000 年在他的博士论文中提出来的一种万维网软件架构风格。其目的是为了便于不同的软件在网络中传递信息。RESTful 是基于 HTTP 协议之上制定的一种资源请求、操作的风格,用一句话来概括就是使用 URL 去定位资源,使用 HTTP 动词描述操作。
HTTP 请求方法在 RESTful api 中的典型应用:

注意: 不同公司在使用 RESTful 架构风格的时候存在部分差别。
RPC协议
目前在行业内常用的 RPC 协议主要如下:
- Dubbo:
-
- Java 基础之上的高性能 RPC 协议
-
- gRPC:
-
- 高性能通用 RPC 框架,基于 Protocol Buffers
-
- PB 是一个语言中立、平台中立的数据序列化框架。
-
- Thrift:
-
- 与 gRPC 类似的多语言 RPC 框架。
- 常见接口协议解析暂时就讲这些哈,如果大家有其他想了解的知识点也可以在下方留言哦!小编尽量满足大家的需求哈~
⬇️ 点击“阅读原文”,提升测试核心竞争力!
原文链接
获取更多相关资料+v~ ceshiren001
获取更多技术文章分享
本文介绍了如何使用AppiumDriver的TouchAction进行移动端App的手势操作,如滑动、长按等,并讲解了网络协议的基础知识,包括HTTP、UDP和RPC等,帮助理解不同协议在数据传输中的应用。

被折叠的 条评论
为什么被折叠?



