使用Selenium启动IE浏览器后出现超时问题求助
我之前帮人解决过几乎一模一样的问题——用Selenium 3.141 + Python 3.8在IE里打开URL成功后,后续代码直接超时卡住,连简单的打印都跑不起来。先看看你贴的代码:
from selenium import webdriver from selenium.webdriver.common.keys import Keys driver=webdriver.Ie(executable_path="...\\IEDriverServer.exe") driver.get("https://google.co.in") # 启动成功 print(7+7) # 此代码未执行,进程超时
结合你的环境(PyCharm 2020.1),这些是最可能的原因和解决办法:
1. 确认驱动版本完全匹配
IEDriverServer的版本必须和你的IE浏览器版本、Selenium 3.141严格对应!比如你用IE11,就得下载对应版本的驱动(别随便找最新的,要和Selenium大版本兼容)。另外划重点:64位系统下,32位的IE驱动往往比64位更稳定,因为64位IE的渲染机制容易导致驱动阻塞。
2. 统一IE的安全区域保护模式
这是IE自动化的经典坑!打开IE的「Internet选项」→「安全」标签,把Internet、本地Intranet、受信任的站点、受限制的站点这四个区域的保护模式设置成完全一样的状态(要么全部开启,要么全部关闭)。Selenium要求这些区域的保护模式一致,否则驱动会和浏览器通信异常,直接卡住。
3. 关闭IE的增强保护模式
如果是IE11,一定要去「Internet选项」→「高级」标签里,找到「增强保护模式」并关闭它,然后重启浏览器。这个模式会拦截驱动和浏览器的正常交互,是超时的常见元凶。
4. 给页面加载设置超时时间
有时候页面看起来加载完了,但后台还有异步请求在跑,Selenium会一直等待页面完全加载导致超时。你可以在初始化驱动后加一行代码,强制设置加载超时:
driver.set_page_load_timeout(30) # 30秒后不管页面有没有加载完,继续执行后续代码
5. 检查驱动的运行权限
右键点击你的IEDriverServer.exe,在「兼容性」里勾选「以管理员身份运行此程序」;同时在PyCharm里,也把你的项目设置成以管理员身份启动——权限不足也可能导致驱动无法继续执行命令。
6. 试试无痕模式启动IE
浏览器的缓存、插件有时候会干扰自动化流程,你可以配置驱动用无痕模式启动IE:
from selenium.webdriver.ie.options import Options ie_options = Options() ie_options.add_argument("-private") driver = webdriver.Ie(executable_path="...\\IEDriverServer.exe", options=ie_options)
你可以按这个顺序排查,一般前两个就能解决问题!
内容的提问来源于stack exchange,提问作者Krishna Atre

