常用定位方法讲解
一、 ID定位
有时候你看不到元素的ID,两种情况 :
1、开发没有添加。2、android版本是4.4以下的。
windows环境下,先打开你的模拟器,然后双击打开android-sdk目录下的tools下的uiautomatorviewer.bat文件
uiautomatorviewer.bat是一个用来来扫描和分析Android应用程序的UI组件的GUI工具。具体使用方法可参考。
打开uiautomatorviewer以后,可以看到uiautomatorviewer已经将模拟器的图形展示在上面了。我们打开计算器app:
如果我们需要对“7”这个数字进行点击操作,
driver.find_element_by_id("com.android.calculator2:id/digit7").click()
二、className定位
driver.find_element_by_class_name("android.widget.Button").click()
三、text定位
(需要使用uiautomator的定位方式,使用text的
driver.find_elements_by_android_uiautomator("new UiSelector().text('7')")
使用这里需要注意一下,如果通过text定位的结果是个list,不能直接click。所以如果要点击需要取数组的值,比如下面是点击找到的第一个元素
driver.find_elements_by_android_uiautomator("new UiSelector().text('7')")[0].click()
四、xpath定位
xpath定位在web自动化中是最常见的,而且也是最有效的,可参考http://blog.csdn.net/mtbaby/article/details/73526690进行安装Firbug
下面我们直接看在app中xpath的使用
driver.find_element_by_xpath("//android.widget.TextView[@text='7']").click()
五、css_selector定位(webview)
只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致
driver.find_element_by_css_selector()
六、link_text定位(webview)
只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致
driver.find_element_by_link_text()
七、name定位
web view容器中的html页面可以用name定位,native并没有name属性
driver.find_element_by_name()