Android 上多方式定位元素(python)python
在学习实际UI自动化测试的时候,首先就须要定位元素,然而定位元素也是最头疼的地方,由于元素各类控件名称的缺失会影响元素的准肯定位。
下面针对Android上点击tab的操做来尝试一下多种方式的元素定位方法。
一个tab的组成多是,一整个tab框,tab框中也可能包含ImageView或TextView,那么其实只要实现点击其中一种均可完成点击tab的操做了。
例子项目中,tab可拆分红元素1(一整个tab框)、元素2(ImageView)和元素3(TextView)。 android
(一)元素1,以下图:app
红框标注的就是那个tab框学习
在图片左侧是元素1对应的全部属性,这里对定位元素有帮助的主要有type(对应classname)、resource-id(对应id)和xpath(对应xpath)。测试
因为元素1缺失resource-id,要实现点击这个tab框,这里咱们只能经过classname和xpath去定位了。
classname方法:ui
self.driver.find_elements_by_class_name("android.support.v7.app.ActionBar.e").__getitem__(1).click()
由于classname在该界面不惟一,因此加了getitem来区分第几个。spa
xpath方法:.net
self.driver.find_element_by_xpath("//android.widget.LinearLayout[1]/android.support.v7.app.ActionBar.e[2]").click()
用xpath来定位基本不知道是干啥的,通常都得加备注,否则维护起来很麻烦。code
(二)元素2,以下图:htm
这里红框标注的是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