selenium的clear()不生效,解決輸入框沒法清空的情況


參考鏈接

web自動化,准備模擬一個修改名稱的操作,想的是定位都輸入框元素,然后使用clear()方法清空輸入框內容,再重新輸入一些內容

結果實際上發現並沒有清空輸入框內容,而是直接在輸入框后面追加了(這里就可以確定元素肯定是定位到了的)

clear()方法為什么會失效不得而知,在網上搜索了一大圈也沒看到有人解釋說為什么會沒起作用(好想知道為什么不起作用……)

解決辦法:

總得來說有三個解決思路

一:雙擊輸入框,然后重新輸入內容(不靠譜)

需要導入 from selenium.webdriver import ActionChains

二:通過鍵盤全選,即模擬發起ctrl+a,然后重新輸入內容(簡單,推薦使用)

需要導入 from selenium.webdriver.common.keys import Keys

三:通過萬能的js直接定位到元素然后將元素的value值清空(需要了解一定的js語法,如果要做好web自動化,js多少也需要掌握點)

下面是以上三種方法的代碼實現

ele = driver.find_element_by_xpath('//*[@id="data-assets-modules"]/div[3]/div/div[2]/form/div/div/div/input')
# 方法一:雙擊輸入框,再輸入新的內容
ActionChains(driver).double_click(ele).perform()
ele.send_keys('嘗試雙擊修改')

# 方法二:通過鍵盤全選,然后直接輸入新的內容,就不用clear了
ele.send_keys(Keys.CONTROL, 'a')
ele.send_keys('通過鍵盤全選達到清空效果,再輸入')

# 方法三:萬能的js
# 這種execute_script()的用法還需要學習
driver.execute_script("arguments[0].value = '';", ele)

price = 249900
driver.execute_script('arguments[0].value="{}";'.format(price), ele)

# 也可以通過css選擇器選取元素再把value清空
driver.execute_script('document.querySelector("#data-assets-modules > div:nth-child(3) > div > div.el-dialog__body > form > div > div > div > input").value=""')
ele.send_keys('通過js清空輸入框')

elem = driver.find_element(By.XPATH, "//*[@id='negotiatedValue']")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM