8x国产精品视频_亚洲国产视频a在线观看_亚洲女人自熨在线视频_中文字幕巨大的乳专区

    <ul id="dwri5"></ul>
    <menu id="dwri5"></menu>
    <ul id="dwri5"><td id="dwri5"></td></ul>
  • 深圳信息港

    天天觀速訊丨談?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()

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

    你輸入的密碼追加過去了,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í)際工作中我也遇到過,有同學(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()

    對(duì)于這個(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)容

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

    可以鍵盤輸入的庫(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的原因?還是說send_keys跟typewrite有一樣的問題?

    解決方法四: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()
    說在最后方法其實(shí)很多,你要思考的是如何模擬這個(gè)操作上面的未必能解決你的問題,你需要根據(jù)實(shí)際情況去探索

    關(guān)鍵詞:

    熱門推薦