在做自動化過程中會遇到各種各樣的奇葩問題,遇到這種問題不要着急,仔細想下操作過程看看是否有其他的辦法解決。今天介紹大家經常遇到的問題clear方法失效
clear方法失效
所謂的clear的方法失效比如:明明已經定位到了輸入框,輸入內容,使用了clear操作方法,但是沒有生效,內容還在。這個時候就要嘗試下如何使用其他的方法進行操作了。
理清思路:
我們先想象下如果,鍵盤上的刪除鍵壞掉了,你輸入了內容如何進行刪除呢,如何借助selenium來清除呢?(這里clear已經不能用了)
1、全選然后進行重新輸入內容
2、刷新頁面,重新輸入內容
3、通過js語法強制清除,重新輸入內容
4、雙擊進行選中輸入內容
先想到了這幾種方法,我們就通過這幾種方法進行用代碼進行實現
全選並重新輸入
在selenium中選中肯定需要運行用到鍵盤操作了,使用鍵盤操作需要導入庫 from selenium.webdriver.common.keys import Keys 然后在選中需要選中的輸入框,輸入“ctrl+a”進行實現,這里我們拿百度進行實戰
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.find_element_by_id('kw').send_keys('測試-安靜') # 導入“ctrl + a”全選。 driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a') time.sleep(2) # 重新輸入 driver.find_element_by_id('kw').send_keys('請關注測試安靜公眾號!')
刷新頁面,重新輸入內容
首先提一點,這個在一些場景下可能比較麻煩,因為比如在操作輸入框之前已經在這個頁面進行了其他的輸入或者其他的操作,那么這個時候在刷新瀏覽器就會導致其他的操作也沒了,需要重新操作,比較費時,但是也是不錯的結局方法
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.find_element_by_id('kw').send_keys('測試-安靜') # 刷新頁面 driver.refresh() time.sleep(2) # 重新輸入 driver.find_element_by_id('kw').send_keys('請關注測試安靜公眾號!')
js語法強制清除,重新輸入內容
js腳本雖然測試時候用的比較少,但是用到的時候就是幫助我們解決問題的時候。
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.find_element_by_id('kw').send_keys('測試-安靜') time.sleep(1) # 通過js語法強制清除 js = 'document.querySelector("#kw").value="";' driver.execute_script(js) time.sleep(2) # 重新輸入 driver.find_element_by_id('kw').send_keys('請關注測試安靜公眾號!')
雙擊進行選中輸入內容
通過雙擊選中輸入內容,這個有一些場景也不適用,比如中間有標點符號,或者說有一些雙擊未能選中的詞語,說道雙擊,就要引入鼠標方法 from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver import time from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get('https://www.baidu.com') driver.find_element_by_id('kw').send_keys('測試-安靜') time.sleep(1) element = driver.find_element_by_id('kw') # 進行雙擊 ActionChains(driver).double_click(element).perform() time.sleep(2) # 重新輸入 driver.find_element_by_id('kw').send_keys('請關注測試安靜公眾號!')
通過安靜執行的代碼動圖可以發現,雙擊后,選定了一個詞,但是沒有全部選中。所以這種方法可能需要在特定的場景下進行使用了。
安靜通過小的幾個例子解決了clear失效的問題,當然如果你有更好的解決方法,可以進行下方留言,共同學習