Python selenium webdriver IE11 使用 send_keys('123456789') 特别慢如何解决?
python selenium webdriver IE11 (环境 win8.1 64 IE11 ) 使用 send_keys(‘123456789’) 特别慢
python 3.5.1 webdriver 试过很多个版本。从 2.4.8 到 3.9.0 都不行。64 位的能用,但特别慢。。输入一个字符要几秒,在网上查找了一下,说要降 IE 版本,WIN8.1 降不了版本,webdriver32 位的版本,根本不用。只打了一个 IE 空白页,无法打开网页,像是卡住了。
Python selenium webdriver IE11 使用 send_keys(‘123456789’) 特别慢如何解决?
5 回复
补充一下,不用使用 CHROME 等其他浏览器,只能使用 IE,因为需要加载组件
用IE11驱动跑Selenium,send_keys慢得离谱是吧?这破浏览器兼容性就这样。别用send_keys了,直接上JavaScript注入,速度能快好几倍。
from selenium import webdriver
driver = webdriver.Ie()
driver.get("your_url")
# 找到输入框
input_element = driver.find_element_by_id("your_input_id")
# 用JavaScript直接设置值
driver.execute_script("arguments[0].value = '123456789';", input_element)
# 如果需要触发事件(比如onchange)
driver.execute_script("arguments[0].dispatchEvent(new Event('change'));", input_element)
原理很简单:send_keys是模拟真实键盘输入,IE11处理得巨慢。而JS直接修改DOM值,绕过所有中间步骤。如果页面有验证逻辑,记得补上对应的事件触发。
用JS注入直接改值,别跟IE的send_keys较劲。
换到 Win7 + IE8 别无他法)
不想换系统,装了数据库,要备份和重新配置,麻烦。。按网上其他人说,换 webdriver32 位版本,在我这里就不好使用,只能打开空白页。然后就进行不下去。
用 execute_script 填算了,还可以填中文呢

