一庭呜、獲取元素信息
- 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()
判斷元素是否可見斤蔓。若可見則返回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ù)期文本不一樣),則可通過修改appium自帶的輸入法來解決妥衣。(在啟動(dòng)設(shè)備的desired_capabilities參數(shù)unicodeKeyboard和resetKeyboard鍵值修改為True)
注意2:測(cè)試完成后記得手動(dòng)將手機(jī)中的輸入法恢復(fù)到默認(rèn)皂吮,否則會(huì)導(dǎo)致手機(jī)輸入法無法使用戒傻。
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è)控件,可通過find_element_by_xpath方法在參數(shù)中添加上下層級(jí)的方式來獲取蜂筹,也可通過元素下再查找元素的方式獲取稠鼻。
- 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ò)