深圳信息港

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

          2023-04-20 11:07:31 來源:博客園

          談?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()

          你會發(fā)現(xiàn)無法登錄,道理很簡單

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


          (資料圖片僅供參考)

          你可能會這樣處理,在密碼元素上先清空之前的內(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沒了!

          屢試不爽但如果輸入12345678,或者h(yuǎn)elloworld,缺又是可以的,我反正是解釋不了當(dāng)然這不是我們的重點(diǎn)。實(shí)際工作中我也遇到過,有同學(xué)也遇到過類似的情況我們可以用其他等價(jià)的手段來替代這個(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的問題)

          解決方法二:鼠標(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()

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

          比如這樣

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

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

          解決方法三:第三方庫來輸入

          可以鍵盤輸入的庫就多了

          比如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,并沒有看到在密碼框中有輸入123456

          畫蛇添足

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

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

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

          解決方法四:js操作

          js操作就比較絲滑,因?yàn)樗梢詫σ粋€(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=請輸入密碼]").value="123456""driver.execute_script(js)driver.find_element("css selector", ".submit>button").click()
          說在最后方法其實(shí)很多,你要思考的是如何模擬這個(gè)操作上面的未必能解決你的問題,你需要根據(jù)實(shí)際情況去探索

          關(guān)鍵詞:

          熱門推薦

          日韩亚洲产在线观看| 亚洲av永久无码精品国产精品| 国产亚洲精品线观看动态图| MM1313亚洲精品无码久久| 亚洲精品蜜夜内射| 精品日韩99亚洲的在线发布| 亚洲狠狠ady亚洲精品大秀| 亚洲狠狠综合久久| 亚洲第一黄色网址| 亚洲av无码片vr一区二区三区| 亚洲人成无码网站在线观看| 久久亚洲私人国产精品vA| 亚洲va在线va天堂va四虎 | 国产国拍亚洲精品mv在线观看 | 亚洲国产成人久久77| 亚洲区小说区激情区图片区| 亚洲综合精品网站| 亚洲成a人无码亚洲成www牛牛| 亚洲精品又粗又大又爽A片| 亚洲国产精品无码久久| 国产精品亚洲一区二区无码| 亚洲国产精品成人网址天堂 | 国产亚洲精品第一综合| 亚洲女人被黑人巨大进入| 久久久久亚洲AV无码专区桃色 | 亚洲va无码专区国产乱码| 水蜜桃亚洲一二三四在线| 久久久久久久亚洲Av无码| 亚洲成人免费网址| 亚洲av永久无码精品表情包| 亚洲色成人中文字幕网站| 亚洲夜夜欢A∨一区二区三区| 久久亚洲精品视频| 亚洲人成电影在线天堂| 亚洲欧洲日韩综合| 亚洲私人无码综合久久网| jizzjizz亚洲日本少妇| 亚洲精品NV久久久久久久久久| 亚洲中文字幕无码一久久区| 久久精品视频亚洲| 亚洲国产综合精品|