一、获取元素信息
- get_attribute(name)
name:元素的属性名
1. 获取元素属性值
-
获取元素的text属性值
element.text
element.get_attribute("text") -
获取元素的content-desc属性值
element.get_attribute("contentDescription") -
获取元素的text或content-desc属性值
element.get_attribute("name")
若元素的content-desc属性值不为空时,则表示获取content-desc的属性值;
若元素的content-desc属性值为空时,则表示获取text的属性值; -
获取元素的resource-id属性值
element.get_attribute("resourceId") -
获取元素的class属性值
element.get_attribute("className")
element.tag_name -
获取元素的其他属性
element.get_attribute("checkable")
element.get_attribute("selected")
......
"""获取元素text属性值"""
ele_text1 = element.text
ele_text2 = element.get_attribute("text") # 查找地点、公交、地铁
""" 获取元素content-desc属性值"""
element_desc = element.get_attribute("contentDescription")
"""获取元素text或content-desc属性值"""
ele_text_desc = element.get_attribute("name") # 查找地点、公交、地铁
""" 获取元素的class属性值"""
ele_class1 = element.get_attribute("className")
ele_class2 = element.tag_name # android.widget.TextView
"""获取元素的clickable属性值"""
ele_clickable = element.get_attribute("clickable") # true
2. 判断元素
- element.is_displayed()
判断元素是否可见。若可见则返回True;否则返回False。 - element.is_selected()
判断元素是否被选中。若被选中则返回True;否则返回False。 - element.is_enabled()
判断元素是否可用。若可用则返回True;否则返回False。
3. 获取元素大小
- element.size
获取元素长度和高度,返回值为字典类型,key值为width、height - element.location
获取元素的起始位置坐标,返回值为字典类型,key值为x、y - element.rect
获取元素的rect数据,返回值为字典类型,key值为width、height、x、y
ele_size = element.size
ele_location = element.location
ele_rect = element.rect
print("size:", ele_size) # size: {'height': 136, 'width': 676}
print("location:", ele_location) # location: {'x': 154, 'y': 94}
print("rect:", ele_rect) # rect: {'height': 136, 'width': 676, 'x': 154, 'y': 94}
二、元素操作
1. 元素的点击、输入和清除操作
-
element.click()
模拟控件点击操作 -
element.send_keys(*value)
模拟输入文本到控件
*value:可以是字符串、数字,也可以是本地文件路径
注意1:使用send_keys方法输入中文时有时会引发输入异常(即输入的文本与预期文本不一样),则可通过修改appium自带的输入法来解决。(在启动设备的desired_capabilities参数unicodeKeyboard和resetKeyboard键值修改为True)
注意2:测试完成后记得手动将手机中的输入法恢复到默认,否则会导致手机输入法无法使用。
desired_capabilities['unicodeKeyboard'] = True
表示使用unicode编码方式发送字符串
desired_capabilities['resetKeyboard'] = True
表示隐藏键盘
- element.clear()
清除控件输入框中内容
inputEle= driver.find_element_by_id("android:id/input")
inputEle.click()
inputEle.send_keys("测试")
inputEle.send_keys(111)
inputEle.clear()
2. 元素下查找下一层级(元素的子孙)
获取某个控件,可通过find_element_by_xpath方法在参数中添加上下层级的方式来获取,也可通过元素下再查找元素的方式获取。
- element.find_element_by_XX()
# networkBar元素下一层级是android.widget.RelativeLayout控件,再下一层级是android.widget.TextView控件。
networkBar = driver.find_element_by_xpath("//*[@resource-id='android:id/list']/android.widget.LinearLayout[3]")
networkBar_grandChild = networkBar.find_element_by_class_name("android.widget.RelativeLayout")\
.find_element_by_class_name("android.widget.TextView")
print(networkBar_grandChild.get_attribute("text")) # 双卡和移动网络
网友评论