轻量级前端框架助力开发者提升项目效率与性能
1630
2022-10-14
Selenium和appium简介
Selenium 经历了四个大版本,Selenium 1.0、Selenium 2.0、Selenium 3.0和Selenium 4.0。Selenium 不是由单独一个工具构成的,而是由一些插件和类库组成的,这些插件和类库有其各自的特点和应用场景。
Selenium 1.0
Selenium IDE 是嵌入在 Firefox 浏览器中的一个插件,可实现简单的浏览器操作的录制与回放功能。Selenium Grid 是一个自动化测试辅助工具。利用 Grid 可以很方便地实现在多台机器上或异构环境中运行测试用例。Selenium RC(Remote Control)是 Selenium 家族的核心部分,支持多种不同语言编写的自动化测试脚本。把 Selenium RC 的服务器作为代理服务器去访问应用,即可达到测试的目的。Selenium RC 分为 Client Libraries 和 Selenium Server 两部分。Client Libraries 主要用于编写测试脚本,负责控制 Selenium Server 的库。Selenium Server 负责控制浏览器行为。Selenium Server 主要分为三部分:Selenium Core、Launcher 和 Http Proxy。Selenium Core就是一堆 JavaScript 函数的集合。通过这些 JavaScript 函数,我们可以用程序对浏览器进行操作。Launcher 用于启动浏览器,把 Selenium Core 加载到浏览器页面当中,同时,把浏览器的代理设置为 Http Proxy。
Selenium 2.0
Selenium 2.0 把 WebDriver 加到了 Selenium1.0 这个家族中。需要注意的是,在 Selenium 2.0 中主推的是 WebDriver,可以将其看作 Selenium RC 的替代品。为了保持向下的兼容性,Selenium 2.0 并没有彻底抛弃 Selenium RC。Selenium RC 与 WebDriver 的工作方式有着本质的区别。Selenium RC 是在浏览器中运行 JavaScript 应用,使用浏览器内置的 JavaScript 翻译器来翻译和执行 selenese 的(selenese 是 Selenium 命令集合)。
WebDriver 通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver 是针对各个浏览器而开发的,取代了嵌入被测 Web 应用中的 JavaScript。WebDriver 与浏览器紧密集成,支持创建更高级的测试,避免了 JavaScript 安全模型导致的限制。除来自浏览器厂 商的支持外,WebDriver 还可利用操作系统级的调用,模拟用户输入。Selenium 与 WebDriver 原本属于两个不同的项目,WebDriver 的创建者 Simon Stewart早在 2009 年 8 月的一封邮件中解释了项目合并的原因。
Selenium 与 WebDriver 合并的原因:为何把两个项目合并?一部分原因是WebDriver 解决了 Selenium 的缺点(例如,能够绕过 JavaScript 沙箱),另一部分原因是 Selenium 解决了 WebDriver 存在的问题(例如,支持广泛的浏览器),还有一部分原因是 Selenium 的主要贡献者和我都觉得合并项目是为用户提供最优秀框架的最佳途径。
Selenium 3.0
2016 年 7 月,Selenium 3.0 悄悄发布了第一个 beta 版。Selenium 3.0 做了以下更新:去掉了 Selenium RC,Selenium 3.0 只支持 Java 8 以上版本,Selenium 3.0 中的 Firefox 浏览器驱动独立了。Selenium 2.0 测试库默认是集成Firefox 浏览器驱动的,在 Selenium 3.0 中,Firefox 浏览器和 Chrome 浏览器一样,在使用前需要-和设置浏览器驱动。mac OS 操作系统集成了 Safari 的浏览器驱动,该驱动默认在/usr/bin/safaridriver 目录下。只支持 IE 9.0 以上版本。
移动应用类型主要分为以下几类: Native App:原生应用。 Mobile Web App:移动 Web 应用。 Hybrid App:混合应用。
Native App(原生应用)是为特定移动设备或平台开发的应用程序(如 Android、iOS或 Windows)。 例如,iPhone 应用程序是用 Swift 写的,Android 应用程序是用 Java 写的。原生应用的可靠性极高,因为它们使用的是底层系统架构和设备的内置功能。
Mobile Web App(移动应用)是通过移动浏览器访问的应用程序,可以通过内置浏览器轻松访问。例如,iOS 上的 Safari,Android 上的 Chrome。它们主要使用 HTML5、JavaScript等技术开发,可以提供定制功能。Mobile Web App 基本来自服务器,并且不能在设备的任何地方离线存储。
Hybrid App(混合应用)主要使用网络技术(HTML5、CSS 和 JavaScript)开发,但嵌入在 App 中运行,从而感觉它像是原生应用程序。对于拥有网页的公司来说,混合应用最受青睐。这些公司通常将混合应用作为封装来构建网页。PhoneGap 和 Sencha Touch 等工具可以为用户构建一个混合应用,混合应用可以通过各自的应用程序商店-
appium 的架构
appium 基于客户端/服务器架构。服务器执行给定顺序的动作:
(1)从客户端接收连接并启动会话。
(2)侦听发出的命令。
(3)执行这些命令。
(4)返回命令执行状态。
UIAutomation 库与移动设备或模拟器内运行的 bootstrap.js 进行通信,执行由 appium客户端收到的命令。
UIAutomator2 是基于 Android 的自动化框架,允许用户构建和运行 UI 测试。appium使用Google公司的UIAutomator2 在真实设备或模拟器上执行命令。UIAutomator2 是Google公司针对 App 设计的 UI 自动化测试框架。典型的用法是在所需的功能中传递以下内容:automationName:uiautomator2
在 appium 1.6 版本中, appium 为 UIAutomator2 提供支持。 appium 使 用appium-android-bootstrap 模块与 UIAutomator2 进行交互。它允许将命令发送到设备,使用Android 的 UIAutomator2 测试框架在真实设备上执行命令。当 appium 客户端请求创建新的 AndroidDriver 会话时,appium 客户端会将所需的功能传递给 appium 节点服务器。首先,UIAutomator2 驱动程序模块创建会话。然后,在连接的Android 设备上安装 UIAutomator2 服务器 apk。接着启动 Netty 服务器。在 Netty 服务启动后,UIAutomator2 服务器在设备上侦听请求并做出响应。
appium 的工作过程
appium Client 支持多种语言/框架,它针对主流的编程语言分别开发了相应的 appium测试库,我们可以选择自己熟悉的语言或框架来编写 appium 测试脚本。appium Client 支持的语言/框架如表。
appium 需要在 PC 上启动一个 Server,监听客户端自动化测试的运行,并将请求发送到对应的移动设备或模拟器中运行。 appium Server 支持 macOS 和 Windows 两大平台。我们可以在不同的平台编写并运行appium 自动化测试。需要特别说明的是,appium Server 项目已经停止更新,由 appium Desktop 替代
移动设备用于运行 appium 自动化测试的环境,既可以是一台连接到 PC 的手机,也可以是在 PC 上运行的 iOS 模拟器或 Android 模拟器。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~