zoukankan      html  css  js  c++  java
  • Android 上多方式定位元素(python)

    Android 上多方式定位元素(python)

    在学习实际UI自动化测试的时候,首先就需要定位元素,然而定位元素也是最头疼的地方,因为元素各种控件名称的缺失会影响元素的准确定位。
    下面针对Android上点击tab的操作来尝试一下多种方式的元素定位方法。
    一个tab的组成可能是,一整个tab框,tab框中也可能包含ImageView或TextView,那么其实只要实现点击其中一种都可完成点击tab的操作了。
    例子项目中,tab可拆分成元素1(一整个tab框)、元素2(ImageView)和元素3(TextView)。 

    (一)元素1,如下图:

    红框标注的就是那个tab框

    在图片左侧是元素1对应的所有属性,这里对定位元素有帮助的主要有type(对应classname)、resource-id(对应id)和xpath(对应xpath)。

    由于元素1缺失resource-id,要实现点击这个tab框,这里我们只能通过classname和xpath去定位了。
    classname方法:

    self.driver.find_elements_by_class_name("android.support.v7.app.ActionBar.e").__getitem__(1).click()

    因为classname在该界面不唯一,所以加了getitem来区分第几个。

    xpath方法:

    self.driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.support.v7.app.ActionBar.e[2]").click()

    用xpath来定位基本不知道是干啥的,一般都得加备注,不然维护起来很麻烦。

    (二)元素2,如下图:

    这里红框标注的是tab框中的ImageView,通过点击该元素也可以实现点击tab的操作。
    classname方法:

    self.driver.find_elements_by_class_name("android.widget.ImageView").__getitem__(2).click()

     id方法:

    self.driver.find_elements_by_id("com.boohee.secret:id/iv_icon").__getitem__(1).click()

     xpath方法:

    self.driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.support.v7.app.ActionBar.e[2]/android.widget.RelativeLayout[1]/android.widget.ImageView[1]").click()

    (三)元素3,如下图:

    这里红框标注的是tab框中的TextView,通过点击该元素也可以实现点击tab的操作。
    classname方法:

    self.driver.find_elements_by_class_name("android.widget.TextView").__getitem__(2).click()

     id方法:

    self.driver.find_elements_by_id("com.boohee.secret:id/tv_tab").__getitem__(1).click()

     xpath方法:

    self.driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.support.v7.app.ActionBar.e[2]/android.widget.RelativeLayout[1]/android.widget.TextView[1]").click()

    上面用的是绝对路径,由于元素3的text有值,这边也可以用相对路径来实现:

    self.driver.find_element_by_xpath("//*[@text='超模25']").click()

    那么看到这里,会发现在Android上classname和id定位时都用到了getitem来区分第几个,而xpath又特别不易理解,维护起来都不太方便。
    如果程序中同一个界面上,元素的classname或id是唯一的话,定位元素将会方便很多。
    Android 上多方式定位元素(python)

    转载:http://blog.csdn.net/liguilicsdn/article/details/51077225,http://www.it610.com/article/5269414.htm

  • 相关阅读:
    Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)
    Spring Boot 2 快速教程:WebFlux 快速入门(二)
    ES 集群上,业务单点如何优化升级?
    Spring Boot 2.x 系列教程:WebFlux 系列教程大纲(一)
    泥瓦匠想做一个与众不同的技术"匠"
    java编程行业微信群,无论新手老手欢迎加入,会一直更新
    Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling
    解决方案:如何防止数据重复插入?
    阿里 Java 手册系列教程:为啥强制子类、父类变量名不同?
    品阿里 Java 开发手册有感
  • 原文地址:https://www.cnblogs.com/zhjsll/p/5673548.html
Copyright © 2011-2022 走看看