appium應(yīng)用之“獲取元素信息和元素操作”(android)

一、獲取元素信息

  • 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屬性值不為空時(shí),則表示獲取content-desc的屬性值;
    若元素的content-desc屬性值為空時(shí),則表示獲取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")                # 查找地點(diǎn)、公交、地鐵
""" 獲取元素content-desc屬性值"""
element_desc = element.get_attribute("contentDescription")
"""獲取元素text或content-desc屬性值"""
ele_text_desc = element.get_attribute("name")            # 查找地點(diǎn)、公交、地鐵
""" 獲取元素的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()
    判斷元素是否可見(jiàn)。若可見(jiàn)則返回True;否則返回False。
  • element.is_selected()
    判斷元素是否被選中。若被選中則返回True;否則返回False。
  • element.is_enabled()
    判斷元素是否可用。若可用則返回True;否則返回False。

3. 獲取元素大小

  • element.size
    獲取元素長(zhǎng)度和高度,返回值為字典類型,key值為width、height
  • element.location
    獲取元素的起始位置坐標(biāo),返回值為字典類型,key值為x、y
  • element.rect
    獲取元素的rect數(shù)據(jù),返回值為字典類型,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. 元素的點(diǎn)擊、輸入和清除操作

  • element.click()
    模擬控件點(diǎn)擊操作

  • element.send_keys(*value)
    模擬輸入文本到控件
    *value:可以是字符串、數(shù)字,也可以是本地文件路徑
    注意1:使用send_keys方法輸入中文時(shí)有時(shí)會(huì)引發(fā)輸入異常(即輸入的文本與預(yù)期文本不一樣),則可通過(guò)修改appium自帶的輸入法來(lái)解決。(在啟動(dòng)設(shè)備的desired_capabilities參數(shù)unicodeKeyboard和resetKeyboard鍵值修改為True)
    注意2:測(cè)試完成后記得手動(dòng)將手機(jī)中的輸入法恢復(fù)到默認(rèn),否則會(huì)導(dǎo)致手機(jī)輸入法無(wú)法使用。

desired_capabilities['unicodeKeyboard'] = True
表示使用unicode編碼方式發(fā)送字符串
desired_capabilities['resetKeyboard'] = True
表示隱藏鍵盤

  • element.clear()
    清除控件輸入框中內(nèi)容
inputEle= driver.find_element_by_id("android:id/input")
inputEle.click()
inputEle.send_keys("測(cè)試")
inputEle.send_keys(111)
inputEle.clear()

2. 元素下查找下一層級(jí)(元素的子孫)

獲取某個(gè)控件,可通過(guò)find_element_by_xpath方法在參數(shù)中添加上下層級(jí)的方式來(lái)獲取,也可通過(guò)元素下再查找元素的方式獲取。

  • element.find_element_by_XX()
# networkBar元素下一層級(jí)是android.widget.RelativeLayout控件,再下一層級(jí)是android.widget.TextView控件。
networkBar = driver.find_element_by_xpath("http://*[@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"))      # 雙卡和移動(dòng)網(wǎng)絡(luò)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容