川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

API定位在不同的方面的定位介绍

作者:川石学院 日期:2022-05-19 13:58:08 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“API定位在不同的方面的定位介绍”。

什么是冒烟测试及如何操作?(图1)

  1. Appium在WEB方面

  支持Selenium的子集比如Class、Xpath等,操作同Selenium。

  2. Appium在原生态方面

  支持Mobile JSON Wire Protocol的策略

  l ios uiautomation:一个字符串针对于UiAutomation library(仅限于iOS)做递归元素搜索。

  l android uiautomator:一个字符串针对于UiAutomator API(仅限于Android)做递归元素搜索。

  l accessibility id:一个字符串针对于ID/NAME(the native Accessibility option utilization)做递归元素搜索。

  3.定位API

  由于在4.1学习过UiAutomator,这里的定位基本上是一致的。

  (1)原生态元素定位

  •   l 通过id定位

  语法:

  driver.find_element_by_id(String)

  对应于UiautomationView中的resource_id

  例子:

  driver.find_element_by_id("com.example.demo4:id/textView1")

  •   l 通过text定位

  语法:

  driver.find_element_by_name(String)

  对应于UiautomationView中的text

  例子:

  driver.find_element_by_name("用户名")

  •   l 通过class name定位

  语法:

  driver.find_element_by_class_name(String)

  对应于UiautomationView中的class

  例子:

  driver.find_element_by_class_name("android.widget.TextView")

  •   l 通过XPath定位

  语法:

  driver.find_element_by_xpath (String)

  例子:

  driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'用户名')]")

  XPath 在 Appium 上的用法依然很强大,有时需要很长的定位语法,因为APP上元素的class命令本来就长,再加上多层级,结果可想而知。

  当果如果出现class 相同的情况下可以用控件的属性值进行区分。

  driver.find_element_by_xpath("//android.widget.Button[contains(@text,'7')]")

  driver.find_element_by_xpath("//android.widget.Button[contains(@content-desc,'times')]")

  driver.find_element_by_xpath("//android.widget.Button[contains(@text,'7')]")

  driver.find_element_by_xpath("//android.widget.Button[contains(@content-desc,'equals')]")

  •   l 通过android uiautomator定位(android移动端特有)

  语法:

  driver.find_element_by_android_uiautomator(new UiSelector().XXX(String))

  例子:

  driver.find_element_by_android_uiautomator(new UiSelector().text(\"用户名\"))

  这里可以参见之前的内容

  1)对text属性的方法

  driver.find_element_by_android_uiautomator('new UiSelector().text("用户名")')

  driver.find_element_by_android_uiautomator('new UiSelector().textContains("户")')

  driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("用")')

  driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^用.*")')

  2)对伪xpath属性的方法

  driver.find_element_by_android_uiautomator('new UiSelector().text("用户名").fromParent(new UiSelector().text("密码"))') #通过同级元素定位同级元素

  driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.TextView").childSelector(new UiSelector().text("用户名"))') #通过父级元素定位子集元素

  3)对class属性的方法

  driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.TextView").text("Custom View")')

  driver.find_element_by_android_uiautomator('new UiSelector().classNameMatches(".*TextView$").text("Custom View")')

  4)对description属性的方法

  driver.find_element_by_android_uiautomator('new UiSelector().description("用户名")')

  driver.find_element_by_android_uiautomator('new UiSelector().descriptionStartsWith("用户")')

  driver.find_element_by_android_uiautomator('new UiSelector().descriptionMatches("^用户.*")')

  5)对resourceId属性的方法

  driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.example.demo4:id/textView1")')

  driver.find_element_by_android_uiautomator('new UiSelector().resourceIdMatches(".*id/textView1$")')

  •   l 通过 ios_uiautomation定位(iOS移动端特有)定位

  语法:

  •   find_element_by_ios_uiautomation(uia_string)

  例子:

  •   driver.find_element_by_ios_uiautomation('.elements()[1].cells()[2]')

  (2)HTML5元素定位

  HTML5的定位方式同Selenium,在这里仅仅给出个表4-53,不做更多的介绍

API定位在不同的方面的定位介绍(图2)


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-05-19 13:58:08
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-05-19 13:58:08
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-05-19 13:58:08
  • 建筑工程专业朱同学成功转行为软件测试人!2022-05-19 13:58:08
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-05-19 13:58:08
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-05-19 13:58:08
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-05-19 13:58:08
  • 文科生转行软件测试照样拿下高薪15K!2022-05-19 13:58:08
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-05-19 13:58:08
  • 毕业1年,迷茫的他最终选择转行软件测试2022-05-19 13:58:08