分类标签归档:selenium

Selenium Grid


Selenium Grid

通过服务器参数 --nodeconfig,可以将 appium 服务器注册到本地的 Selenium grid (Grid 的配置文档)

> appium --nodeconfig /path/to/nodeconfig.json
# 或者使用源文件执行
> node . --nodeconfig /path/to/nodeconfig.json

在 Selenium 节点(Node)的配置文件里,你需要定义 browserNameversionplatform,然后 Grid 会通过这些参数将你的测试重定向到正确的设备上。你还需要配置 h...

阅读全文...

将你的iOS测试从UIAutomation(iOS 9.3及更高版本)迁移到XCUITest(iOS 9.3及更高版本)


将你的iOS测试从UIAutomation(iOS 9.3及更低版本)迁移到XCUITest(iOS 9.3及更高版本)

对于 iOS 自动化,Appium 依赖苹果提供的系统框架。对于 iOS 9.2 及更低版本,苹果唯一的自动化技术被称为UIAutomation,它运行在 “Instruments” 中。从 iOS 10 开始,苹果已经完全删除了 UIAutomation 工具,因此 Appium 不可能按照以前的方式进行测试。同时,苹果推出了一款名为 XCUITest 的新型自动化技术,从 iOS 9.3 到 iOS 10 及以上版本,这将是苹果唯一支持的自动化框架。

Appium...

阅读全文...

多语言支持


多语言支持

编程语言在处理非拉丁字符时候有一个问题,带重音符号的字符有多种编码方式。比如, 字母é,有两种编码:一个单字符é(Unicode的LATIN SMALL LETTER E WITH ACUTE (带有尖标的小写拉丁字母E))和字母e后跟上音标́的组合(COMBINING ACUTE ACCENT (组合尖音标))。为了解决这个问题,就有了normalization(标准化),一种让"相同的字符串有一个唯一的二进制表示" 的运算。

幸运的是,对ASCII文本(即不需要再被标准化的文本)进行标准化不会引起任何变化,且执行多次运算也不会有副作用。 因此,这个标准化函数在文本上调用不...

阅读全文...

调整网络连接


调整网络连接

Selenium [移动 JSON 协议规范](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md) 支持一个获取和设置网络连接的[API](https://github.com/SeleniumHQ/mobile-spec/blob/master/spec-draft.md#104)。这个 API 会设置一个掩码,每一个可能的网络状态对应一个掩码

值 (名称) 数据 Wifi 飞行模式
0 (无网) 0 0 0
1 (飞行模式) 0 0 1
2 (Wifi) 0 1 0...

阅读全文...

重置策略


重置策略

自动化平台 默认 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的控件上执行“滑动”操作...

阅读全文...