元素定位与交互
Appium 支持一个 Webdriver 元素定位方法的子集
find by "tag name" (i.e., 通过 UI 的控件类型)
find by "name" (i.e., 通过元素的文本, 标签, 或者开发同学添加的 id 标示, 比如 accessibilityIdentifier)
find by "xpath" (i.e., 具有一定约束的路径抽象标示, 基于 XPath 方式)
### 标签名抽象映射
例子
找到屏幕上所有的 UIAButtons
WD.js:
driver.elementsByTagName('button', function(err, buttons) {
// tap all the buttons
var tapNextButton = function() {
var button = buttons.shift();
if (typeof button !== "undefined") {
button.click(function(err) {
tapNextButton();
})
} else {
driver.quit();
}
}
tapNextButton();
});
Ruby:
buttons = @driver.find_elements :tag_name, :button
buttons.each { |b| b.click }
Python:
[button.click() for button in driver.find_elements_by_tag_name('button')]
找到所有文本内容 (或者 accessibilityIdentifier) 为"Go"的元素
WD.js:
driver.elementByName('Go', function(err, el) {
el.tap(function(err) {
driver.quit();
});
});
Ruby:
@driver.find_element(:name, 'Go').click
Python:
driver.find_element_by_name('Go').click()
找到以"Hi, "开头的导航条元素
WD.js:
driver.elementByXpath('//navigationBar/text[contains(@value, "Hi, ")]', function(err, el) {
el.text(function(err, text) {
console.log(text);
driver.quit();
});
});
Ruby:
@driver.find_element :xpath, '//navigationBar/text[contains(@value, "Hi, ")]'
通过 tagName 查找元素
Java:
driver.findElement(By.tagName("button")).sendKeys("Hi");
WebELement element = findElement(By.tagName("button"));
element.sendKeys("Hi");
List elems = findElements(By.tagName("button"));
elems.get(0).sendKeys("Hi");
Python:
driver.find_elements_by_tag_name('tableCell')[5].click()
FindAndAct
你也可以通过一行命令来完成元素的查找和交互 (只适用于 IOS)
举个例子, 你可以通过一次调用来实现查找一个元素并点击它, 使用的命令是mobile: findAndAct
Python:
args = {'strategy': 'tag_name', 'selector': 'button', 'action': 'tap'}
driver.execute_script("mobile: findAndAct", args)
用一个滑动手势进行下拉刷新
Python:
js_snippet = "mobile: swipe"
args = {'startX':0.5, 'startY':0.2, 'startX':0.5, 'startY':0.95, 'tapCount':1, 'duration':10}
driver.execute_script(js_snippet, args)
使用 Appium Inspector 来定位元素
(翻译备注: 这个工具目前只有 Mac 版本, 如果你使用的是 windows, 可以使用 android 自带的 traceview 工具来获得元素的位置)
Appium 提供了一个灵活的工具 Appium Inspector, 允许你在 app 运行的时候, 直接定位你正在关注的元素. 通过 Appium Inspector(靠近 start test 按钮的 i 标示文本), 你可以通过点击预览窗口上的控件来获得它的 name 属性, 或者直接在 UI 导航窗口中定位
概述
Appium Inspector 有一个简单的布局, 全部由如下窗口组成.
UI 导航器, 预览, 录制与刷新按钮, 和交互工具
例子
启动 Appium Inspector 后, (通过点击 app 右上的小"i"按钮), 你可以定位任何预览窗口中的元素. 作为测试, 我正在查找 id 为"show alert"的按钮
要找到这个按钮的 id, 在定位预览窗口中我点击了"show alert"按钮, Appium Inspector 在 UI 导航窗口中高亮显示了这个元素, 然后展示了刚被点击按钮的 id 和元素类型