亚色网站-亚色最新网址-亚州三级视频-亚州视频一区-成年网站在线看-成年网站在线在免费播放

深圳信息港

天天觀速訊丨談?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沒了!

屢試不爽但如果輸入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,并沒有看到在密碼框中有輸入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)鍵詞:

熱門推薦

主站蜘蛛池模板: 欧美伊人久久综合网 | 三级黄色毛片 | 日本三日本三级香港三级 | 在线观看一区二区三区视频 | 色偷偷91久久综合噜噜噜 | 中文字幕一区2区3区 | 18男女很黄的视频 | 久热这里只精品热在线观看 | 欧美另类tv| 一级特黄aa大片免费 | 777色狠狠一区二区三区香蕉 | 香蕉视频网站在线 | 动漫精品成人免费网站 | 毛片网站在线看 | 乱子伦xxxxvideos | 欧美一区二区三区成人看不卡 | 2020年精品国产午夜福利在线 | 日本欧美人xxxxx在线观看 | 精品午夜寂寞黄网站在线 | 2021国产精品视频一区 | 女人牲交视频一级毛片 | 日本处888xxxx | 婷婷六月丁香色婷婷网 | 一本大道在线 | 欧美另类第一页 | 国产一区中文字幕在线观看 | 色吊丝最新网站 | 操干视频| 日本视频免费高清一本18 | 国产午夜大片 | 国产成人精品区在线观看 | 成人影视频 | 日本视频中文字幕一区二区 | 日批免费视频不要会员 | 成人激情免费视频 | 波多野结衣一区二区三区在线观看 | 国产一区二区三区影院 | 亚洲综合第一欧美日韩中文 | 六月婷婷综合 | 国产精品入口麻豆免费观看 | 天干天干夜天干天天爽 |