Appium元素定位与交互中文文档

发表于:2015-5-22 15:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:seveniruby    来源:51Testing软件测试网采编

  Appium支持一个Webdriver元素定位方法的子集
  find by "tag name" (i.e., 通过UI的控件类型)
  find by "name" (i.e., 通过元素的文本, 标签, 或者开发同学添加的id标示, 比如accessibilityIdentifier)
  find by "xpath" (i.e., 具有一定约束的路径抽象标示, 基于XPath方式)
  ###标签名抽象映射
  你可以使用UIAutomation的控件类型用于标签名, 或者使用简化的映射, 可以参考下如下例子
  https://github.com/appium/appium/blob/master/lib/uiauto/lib/mechanic.js#L29
  (官方文档外的补充)
  对于Android下的元素对应, 可以参考
  https://github.com/appium/appium/blob/master/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/AndroidElementClassMap.java
  例子
  找到屏幕上所有的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();
});
buttons = @driver.find_elements :tag_name, :button
buttons.each { |b| b.click }
[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<WebElement> elems = findElements(By.tagName("button"));
  elems.get(0).sendKeys("Hi");
  Python:
  driver.find_elements_by_tag_name('tableCell')[5].click()
  FindAndAct<a name="findandact"></a>
  你也可以通过一行命令来完成元素的查找和交互(只适用于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)
  备注: driver.execute_script() 可以在 Automating Mobile Gestures: Alternative access method) 找到说明
  使用Appium Inspector来定位元素
  (翻译备注: 这个工具目前只有Mac版本, 如果你使用的是windows, 可以使用android自带的traceview工具来获得元素的位置)
  Appium提供了一个灵活的工具Appium Inspector, 允许你在app运行的时候, 直接定位你正在关注的元素. 通过Appium Inspector(靠近start test按钮的i标示文本), 你可以通过点击预览窗口上的控件来获得它的name属性, 或者直接在UI导航窗口中定位
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号