美文网首页
appium应用之“获取元素信息和元素操作”(android)

appium应用之“获取元素信息和元素操作”(android)

作者: rr1990 | 来源:发表于2019-04-01 20:14 被阅读0次

一、获取元素信息

  • 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"))      # 双卡和移动网络

相关文章

网友评论

      本文标题:appium应用之“获取元素信息和元素操作”(android)

      本文链接:https://www.haomeiwen.com/subject/tvhbbqtx.html