分类目录归档:测试

重置策略


重置策略

自动化平台 默认 fullReset noReset
iOS (包括XCUITest) 测试完成后关闭模拟器。不销毁模拟器。不从真机上卸载应用。 测试完成后卸载应用, 模拟器测试结束后销毁模拟器。 测试结束后不销毁或者关闭模拟器。启动测试运行在任意正在运行的模拟器或者插入的真机。
Android 测试结束后停止应用,清理应用数据,不卸载应用包。 测试结束后停止应用,清理应用数据,卸载应用包。 不停止应用,不清理应用数据,不卸载应用包。

阅读全文...

Android覆盖率指南


Android Coverage Guide

要求

  • 硬件要求:Android 覆盖率需要使用模拟器或者 root 过的机器。
  • 你需要使用UiAutomator2构建你的应用。也就是说,你要在你的Android项目中实现Instrumentation的子类。Instrumentation将实现对代码覆盖情况的收集。
  • 由于Instrumentation的数据存在于内存中,因此你还需要实现一个BroadCastReceiver,用于在Instrumentation结束时将Instrument结果输出到手机存储器的文件中。

项目结构

你的项目需要看起来类似如下的结构

src/main/jav...

阅读全文...

uiautomator UiSelector


uiautomator UiSelector

Appium 使用 UiSelectors 来进行查找。 同时也支持 UiScrollable

注意,根据索引查找并不可靠,所以更应该使用实例(instance)。后续的示例是使用 Ruby 来测试 api demos apk。

查找第一个 textview。

# ruby
first_textview = find_element(:uiautomator, 'new UiSelector().className("android.widget.TextView").instance(0)');

根据...

阅读全文...

iOS 谓词(Predicate)


iOS 谓词(Predicate)

在查看 '-ios uiautomation' 搜索策略时了解 谓词(Predicate) 十分必要。 UIAutomation JavaScript API有下列几种非常有用的方法:

(UIAElement) UIAElementArray.firstWithPredicate(PredicateString predicateString)
(UIAElementArray) UIAElementArray.withPredicate(PredicateString predicateString)

原生的JS搜索策略(由Apple提供)提供了更大...

阅读全文...

使用 WebDriverAgent/XCTest Backend 进行iOS自动化手势操作


使用 WebDriverAgent/XCTest Backend 进行iOS自动化手势操作

很可惜,苹果官方的 XCTest 框架本身并不支持 TouchAction 接口实现的 W3C 标准。尽管如此,XCTest 提供了非常丰富的手势操作,这些操作都是 iOS 平台独有的。你可以在 1.6.4-beta 版本的 Appium 中开始使用这些手势操作。

需要特别注意的是目前XCTest和WDA正在不断优化改变的阶段,这意味着所有 mobile: * 的命令可能会在没任何通知的情况下就被调整更改。

mobile: swipe

这个手势是在指定的屏幕上的控件或App的控件上执行“滑动”操作...

阅读全文...

自动化混合应用


自动化混合应用

Appium 的核心理念之一是,你不应该为了测试而改变被测的应用程序。在这种理念中,可以使用像 Selenium 测试 Web 应用的方式去测试混合应用。Appium 需要知道你是想自动化应用的原生部分还是 Web 视图,这在技术上有一点复杂。但值得庆幸的是,我们可以继续使用 Selenium WebDriver 做所有的事。

一旦测试处于 Web 视图上下文之中,所有 Selenium WebDriver API 指令集都是可用的。

进入 Web 视图上下文(context)

在你的 Appium 测试中,以下是与 Web 视图通信所必须的几个步骤:

  1. 导航到你的应用程...

阅读全文...

自动化测试移动网络应用


自动化测试移动网络应用

如果你有兴趣在 iOS 系统上的 Safari 浏览器或者 Android 系统上的 Chrome 浏览器进行网页自动化的话 ,Appium可以帮助你。你只要正常地写 WebDriver 测试,通过特别的设置,可以把 Appium 当成 Selenium 服务来运行。

模拟器上的移动端Safari浏览器

首先,确定你的 Safari 开发者模式开启,移动调试端口打开。

如果你需要用模拟器或真实设备,你必须在用 Appium 之前打开 Safari 浏览器。

然后,想在移动端 Safari 上运行你的测试,就需要按如下设置 desired capabilities:...

阅读全文...

Appium服务器参数


Appium 服务器参数

许多 Appium 1.5 中的服务器参数已被弃用,取而代之使用的是 -default-capabilities 标识

用法:node . [标志]

服务器标志

所有标志都是可选的,但是有些必须跟指定标志组合使用才生效。

...
标志 默认 描述 示例
--shell null 进入 REPL 模式
--allow-cors false 打开 CORS 兼容模式,这将允许从托管在任何域中的网站内连接到 Appium 服务器。启用此功能时要小心,因为如果您访问的网站使用跨域请求,在 Appium 服务器上启动或运行内省会话,则可能存在安全风险。

阅读全文...

移动手势的自动化


移动手势的自动化

尽管 Selenium WebDriver 的规范已经支持了一些移动交互,但它的参数并不总是能轻易映射到底层设备的自动化框架所提供的方法上(比如 iOS 上的 UIAutomation)。为此,Appium 在最新的规范(https://dvcs.w3.org/hg/webdriver/raw-file/tip/webdriver-spec.html#multiactions-1) 中实现了新的触摸操作和多点触控 API。注意,这与早期版本中原始的 JSON Wire 协议里的触摸操作 API 不同。

这些 API 允许你使用多个执行器去建立任意的手势。请查看对应语言的...

阅读全文...