中文字幕在线观看亚洲视频,精品国产A∨无码一区二区三区,欧美日韩中文一区,国模和精品嫩模私拍视频

深圳信息港

天天觀速訊丨談?wù)剆elenium中的clear后輸入內(nèi)容異常的處理

2023-04-20 11:07:31 來(lái)源:博客園

談?wù)剆elenium中的clear后輸入內(nèi)容異常的處理案例在線考試項(xiàng)目的登錄:http://124.223.31.21:9097/#/

代碼

from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://124.223.31.21:9097/#/")driver.find_element("id", "formLabelAlign.username").send_keys("20154084")driver.find_element("id", "formLabelAlign.password").send_keys("123456")driver.find_element("css selector", ".submit>button").click()

你會(huì)發(fā)現(xiàn)無(wú)法登錄,道理很簡(jiǎn)單

你輸入的密碼追加過(guò)去了,send_keys如果之前有內(nèi)容,是會(huì)保留的,追加你輸入的內(nèi)容。


(資料圖片僅供參考)

你可能會(huì)這樣處理,在密碼元素上先清空之前的內(nèi)容(clear),然后再去輸入

driver.find_element("id", "formLabelAlign.username").send_keys("20154084")driver.find_element("id", "formLabelAlign.password").clear()driver.find_element("id", "formLabelAlign.password").send_keys("123456")

一個(gè)奇怪的現(xiàn)象發(fā)生了,你是清空了之前的內(nèi)容,但你輸入的是12345,6沒(méi)了!

屢試不爽但如果輸入12345678,或者h(yuǎn)elloworld,缺又是可以的,我反正是解釋不了當(dāng)然這不是我們的重點(diǎn)。實(shí)際工作中我也遇到過(guò),有同學(xué)也遇到過(guò)類似的情況我們可以用其他等價(jià)的手段來(lái)替代這個(gè)清空后輸入的行為解決方法一:鍵盤操作

在密碼上按CTRL+A,再輸入

示例代碼

driver.find_element("id", "formLabelAlign.password").send_keys(Keys.CONTROL,"A")driver.find_element("id", "formLabelAlign.password").send_keys("123456")driver.find_element("css selector", ".submit>button").click()

從運(yùn)行的效果看,是全選了,但依然輸入的是12345(至此我非常懷疑是send_keys的問(wèn)題)

解決方法二:鼠標(biāo)操作

在元素上雙擊(相當(dāng)于是全選的操作)

然后再輸入

示例代碼

ele_password  = driver.find_element("id", "formLabelAlign.password")ActionChains(driver).double_click(ele_password).send_keys("123456").perform()

效果OK

這樣也是ok的

ele_password  = driver.find_element("id", "formLabelAlign.password")ActionChains(driver).double_click(ele_password).send_keys_to_element(ele_password,"123456").perform()

對(duì)于這個(gè)case,既然懷疑是send_keys的問(wèn)題,那我們完全可以用其他方式來(lái)輸入內(nèi)容

比如這樣

ele_password  = driver.find_element("id", "formLabelAlign.password")ele_password.clear()ActionChains(driver).send_keys_to_element(ele_password,"123456").perform()

即保留了clear,但用其他方式來(lái)輸入內(nèi)容

解決方法三:第三方庫(kù)來(lái)輸入

可以鍵盤輸入的庫(kù)就多了

比如pyautogui

示例代碼

from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://124.223.31.21:9097/#/")driver.find_element("id", "formLabelAlign.username").send_keys("20154084")ele_password  = driver.find_element("id", "formLabelAlign.password")ele_password.clear()import pyautoguipyautogui.typewrite("123456")driver.find_element("css selector", ".submit>button").click()

的確搞定了

但有點(diǎn)奇怪的是

我加了sleep,并沒(méi)有看到在密碼框中有輸入123456

畫蛇添足

ele_password.clear()ele_password.click()import pyautoguipyautogui.typewrite("123456")

click的效果是有的,但是,又只輸入了12345

至此有點(diǎn)懵,不是send_keys的原因?還是說(shuō)send_keys跟typewrite有一樣的問(wèn)題?

解決方法四:js操作

js操作就比較絲滑,因?yàn)樗梢詫?duì)一個(gè)元素的value進(jìn)行賦值,不存在什么clear

示例代碼

from selenium import webdriverdriver = webdriver.Chrome()driver.get("http://124.223.31.21:9097/#/")driver.find_element("id", "formLabelAlign.username").send_keys("20154084")js = "document.querySelector("[placeholder=請(qǐng)輸入密碼]").value="123456""driver.execute_script(js)driver.find_element("css selector", ".submit>button").click()
說(shuō)在最后方法其實(shí)很多,你要思考的是如何模擬這個(gè)操作上面的未必能解決你的問(wèn)題,你需要根據(jù)實(shí)際情況去探索

關(guān)鍵詞:

熱門推薦