分类标签归档:selenium

Appium 简述


Appium 简述

Appium packages

appium

  • 运行时的基本检查
    • 节点版本(>= 4)
    • CLI 参数检查
      • 包含所有可用和支持的CLI参数
      • 检是否有冲突和弃用
  • 统一存放日志
    • 统一存放npmlog, winston和appium-logger
  • 启动AppiumDriver(继承Basedriver)
    • 为iOS/Android/Selendroid/Fake Driver 建立会话
    • 创建/删除Appium会话
  • 启动baseServer (appium-express)
    • 通过驱动给出的路径

appium-express (部分appium basedriver)

  • 启动expr...

阅读全文...

如何编写文档


如何编写文档

##用于写一个 h2 头。每个文档必须以 h2 开头。 这是为了支持 appium.io 文档生成。不要使用---下划线方法创建标题。 不要对标题使用 h1 #===,因为目录表不支持这样(文件夹名称将用作 h1)。

副标题

### 用于编写副标题

常规标题

#### 用于不出现在目录里的标题。 不要使用 h5 ##### 或是 h6 ######

换行符

不要使用 -- 或者 ---这样的换行符。

链接

链接到 readme :

[readme](../../README.md)

链接到捐赠:

[捐赠](../../CONTRIBUTING.md)

链接到另一个...

阅读全文...

给贡献者的风格指南


给贡献者的风格指南

感谢您对Appium的贡献!以下是我们编写javascript代码时需要遵守的准则,请确认你的提交能符合这些规范,这有利于我们合并你的代码时能保持良好的编码风格。其中最核心的准则是:使你的代码与其他代码的编码风格保持一致

衍合(Rebasing)

每个 pull 请求中的提交(commits)都应该包含逻辑变更(logical changes)。 如果有多位贡献者,请确保他们各自都有自己的提交记录,修改作者信息不是一个好主意。合并(merge)提交必须从 pull 请求中 rebase 。

检错(Linting)

所有的代码(除了使用了 Apple 私有方法的boo...

阅读全文...

一个开发人员对于Appium的概述


一个开发人员对于Appium的概述

在阅读这个此文档之前,请确保你已经阅读并理解了关于Appium的基本概念, 以及关于如何参与Appium贡献说明

技术愿景

Appium致力于成为一个移动JSONWP前端,实现最佳的应用自动化技术。仅此而已。我们想要采用所有不同的 但自带亮点的自动化引擎,通过制作Appium驱动程序来平滑它们的差异和瑕疵,同时将它们纳入Appium。这与 Selenium项目有异曲同工之妙。对于我们而言,我们想要每一个驱动都是一个独立的实体(单独的repo, 测试, 等等)即便它们使用共享库,这一举措会使Appium驱动程序的开发变得尽可能简单,而且不拘泥于样板。我们...

阅读全文...

从源码运行Appium


从源码运行Appium

你想从源码运行Appium并帮助修复BUG和添加功能吗? 真棒!只需要fork工程,添加一个修改,然后发送pull请求即可! 在开始之前请阅读我们的代码风格指南(Style Guide。 在发送pull请求前请确保通过单元和功能测试;关于如何运行测试等更多信息,请继续阅读!

首先,确保你阅读README文件且按照设置说明走。

从源码配置 Appium

Appium 的配置涉及:

  1. Appium Server —— 在你的测试代码和设备或模拟器之间通过 Appium Server 来回发送消息
  2. 测试脚本 —— 任何客户端语言都可以,只要和 Appium 兼容

运行...

阅读全文...

Settings


Settings

Settings是appium引入的一个新概念。 它们目前不是Mobile JSON Wire协议或Webdriver规范的一部分。

Settings是用来指定appium server的工作方式。

Settings有以下特点:

  • 可变性,Settings在一个会话中是可以被修改的。
  • 临时性,Settings只对当前会话生效,新建立的会话会被重置。
  • 局限性,Settings只用来控制appium server,不能用于控制被测应用或设备。

以Android的ignoreUnimportantViews为例。Android中可以设置ignoreUnimportantVi...

阅读全文...

Appium 事件计时


Appium 事件计时

Appium 提供了一个能力,可以获取关于启动信息和命令执行时间的计时信息。这是由 eventTimings 这个初始化参数控制的高级功能(把这个参数设置为 true 来记录事件的计时信息)

打开这个参数,GET /session/:id 这个接口的响应结果(也就是,driver.getSessionDetails() 的响应结果,或者类似的,取决于客户端实现)中会包含 events 属性。下面是 events 属性的结构

{
    "<event_type>": [<occurence_timestamp_1>, ....

阅读全文...

跨域iFrame的自动化 同源策略会阻止Appium对和父页面不同域的iFrame进行自动化测试。


跨域 iFrame 的自动化

同源策略 会阻止 Appium 对和父页面不同域的 iFrame 进行自动化测试。

子域名的解决方案

如果父页面和 iFrame 使用同一个 domain (比如 site.comshop.site.com),你可以在父页面和 iFrame 里将 document.domain 设置为一个共同的domain。这就解决了同源问题。

父页面:

<html>
  <head>
    <script>
      document.domain = 'site.com';
    </script>
  <...

阅读全文...

如何搭建并定制 WebDriverAgent Server


如何搭建并定制 WebDriverAgent Server

Appium 的 iOS 版本的后端用的是Facebook's WebDriverAgent。该后端是基于苹果公司的 XCTest 框架,所以也有所有XCTest 框架已知的问题。其中有些问题我们正在设法解决,有一些在现阶段可能无法解决。本文中描述的方法已经能够使您完全掌握在设备上如何构建、管理和运行WDA。通过这种方式,您可以在CI环境中对您的自动化测试进行微调,并使其在长期运行的情况下更加稳定。

重点:

  • 如果使用了Appium的默认设置,则不需要如下的步骤。服务器将为您搞定一切,当然你也不能对WDA做太多控制。
  • 对连接的被...

阅读全文...