元素通过name元素定位
Appium的name元素定位对应的是Android上的text字段,语法:
driver.find_element_by_name(‘安检测速’).click()
缺点:部分文本,虽然会显示出来,但是空间上该text字段获取失败
元素通过classname定位
Appium的classname元素定位对应的是Android上的class字段,语法:
driver.find_element_by_class_name(‘android.widget.TextView’).click()
缺点:页面可能存在多个class一样的元素,会导致定位错误
元素的相对定位
说明:相对地址定位,指先指定一个位置范围,再相对此范围内去查找需要的元素
脚本及语法如下:
root_element=driver.find_element_by_id('com.mydream.wifi:id/rlWifiAvailable')
root_element.find_element_by_id('com.mydream.wifi:id/tvTitle').click()
元素的绝对定位xpath
常用的匹配符号
符号 | 说明 |
/ | 从根节点取,逐级获取 |
// | 从匹配选择的当前界面选择,该方式不考虑节点位置 |
* | 匹配任何元素节点 |
@ | 选取属性 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
示例:
脚本:
#!_*_ coding:UTF-8 _*_
from find_element.capability import driver
#根据相对路径来定位
# driver.find_element_by_xpath('/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.View[2]/android.support.v7.widget.RecyclerView/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[3]').click()
#根据绝对路径来定位
# driver.find_element_by_xpath('//android.widget.RelativeLayout/android.widget.TextView[3]').click()
# 根据绝对路径//>*匹配任何元素节点>@根据元素属性三种组合来定位
driver.find_element_by_xpath('//*[@text="安检测速"]').click()
通过list定位
背景:
部分元素得属性值一样,倒是定位不准确,此时可以通过list数组得方式,通过数组下标来定位到指定得元素
语法:find_elements_by_.....
脚本: #!_*_ coding:UTF-8 _*_ from find_element.capability import driver #根据id或者class定位时,会出现同一个页面上部分元素得id或者class值一样,此时可以通过list得方式定位 textview=driver.find_elements_by_class_name('android.widget.TextView') #查询到页面上class为android.widget.TextView得所有元素 textview[3].click() #根据元素得数据下标来定位到对应得元素