from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com") # 定位元素 input_box = driver.find_element_by_id("kw") search_btn = driver.find_element_by_id("su") # sen_keys:文本框輸入內容操作 input_box.send_keys("selenium") # click:按鈕點擊操作 search_btn.click() # clear:文本框清除內容操作 input_box.clear() driver.close()
使用selenium的 send_keys 方法能夠滿足大多數情況的輸入操作,但是在輸入內容很多的情況下,使用該方法會消耗很多時間。
此時可以使用selenium執行js的 innerHTML方法能快速輸入內容。
但是使用js的方法輸入內容有一定缺陷性,它對常見 input標簽類型的輸入框無效,因為該js方法是向標簽插入文本內容,而input標簽的輸入內容是保存在它的value屬性中,所以該js方法只對富文本框生效。
創建一個簡單的html界面
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>test</title> </head> <body bgcolor="burlywood"> <div> <textarea id="kw1" cols="30" rows="10"></textarea> <hr> <textarea id="kw2" cols="30" rows="10"></textarea> <hr> <input id="kw3" value=""> </div> </body> </html>
from selenium import webdriver driver = webdriver.Chrome() driver.get("file:///E:/test.html") search_str = "超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超" \ "長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長" \ "內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容" \ "超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長" \ "內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內" \ "容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容" \ "超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超" \ "長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長" \ "內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內" \ "容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容" \ "超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容超長內容" # 使用innerHTML方式輸入 js = f'document.getElementById("kw1").innerHTML="{search_str}";' driver.execute_script(js) # 使用send_keys方式輸入 driver.find_element_by_id('kw2').send_keys(search_str) # 在input框中使用innerHTML方式輸入 js = f'document.getElementById("kw3").innerHTML="{search_str}";' driver.execute_script(js)