Appium框架中Android下EditText內容清除
在做手機自動化測試過程中 ,難免會對EditText的內容進行修改,通常我們對EditText輸入 內容的時候,用的是Send_key()函數。可是這個函數不會先清除原來的內容,只會在光標當前位置上輸入函數參數中的數據。如果我們需要修改,必須清除原來的內容,查看了一下clear()參數不好使用,只好去網上搜索了。
找到了如下方法:
“首先 clear(), send_keys(), set_text(),在android上不太好用是個已知的bug (在IOS上不清楚,沒有測試環境),會在Appium 1.2.3上修復。請參見github的issue:https://github.com/appium/python-client/issues/53
在這之前我們可以用 press_keycode的方式實現刪除,刪除速度比忽略 clear()拋出的異常要快很多。
大概思路是:
1. 點擊要清除的edit field
2. 全選
3. 刪除
element.click()
sleep(1) #waiting for 1 second is important, otherwise 'select all' doesn't work. However, it perform this from my view
self.driver.press_keycode(29,28672) # 29 is the keycode of 'a', 28672 is the keycode of META_CTRL_MASK
self.driver.press_keycode(112) # 112 is the keycode of FORWARD_DEL, of course you can also use 67“
我試了一下上面的方法,沒有什么效果,只好繼續尋找了。搜了好多網頁,在一個網頁上看到了一個不錯的辦法,不過可以打開的網頁太多了,一忙忘記是哪兒個網頁了。具體的方案就是:
先將光標移到文本框最后,然后取一下EditText中文本的長度,最后一個一個地刪除文本。
具體示例如下:
def edittextclear(self,text):
'''
請除EditText文本框里的內容
@param:text 要清除的內容
'''
DRIVER.keyevent(123)
for i in range(0,len(text)):
DRIVER.keyevent(67)
使用實例:
adr=DRIVER.find_element_by_id('com.subject.zhongchou:id/edit_person_detailaddress') #找到要刪除文本的EditText元素
adr.click()#激活該文本框
context2=adr.get_attribute('text')#獲取文本框里的內容
self.edittextclear(context2)#刪除文本框中是內容
posted on 2014-12-11 23:33 順其自然EVO 閱讀(2363) 評論(0) 編輯 收藏 所屬分類: android