同一Selenium驱动多请求无超时异常:脚本挂起问题求助
我之前处理过类似的SharePoint + Selenium Firefox驱动的诡异挂起问题,给你几个经过验证的排查和解决方向:
1. 清除会话Cookie避免站点冲突
SharePoint的身份验证和会话机制对同一浏览器会话下的多站点访问限制很严格,第一次访问后留下的Cookie可能会导致第二个站点的请求被卡住。你可以在切换站点前强制清除所有Cookie:
# 以Python Selenium为例 # 第一次访问完成后 driver.manage().delete_all_cookies() # 再请求第二个站点 driver.get("https://your-second-sharepoint-site.com")
2. 启用私有浏览模式
启用Firefox的私有模式可以彻底隔离不同站点的会话数据,避免SharePoint的会话锁冲突:
from selenium import webdriver options = webdriver.FirefoxOptions() options.add_argument("-private") driver = webdriver.Firefox(options=options)
3. 修改页面加载策略
默认的normal加载策略会等待页面所有资源(包括图片、第三方脚本)加载完成,SharePoint页面经常有大量异步资源或无响应的第三方请求,导致驱动无限等待。改成eager策略,让驱动在DOM结构加载完成后就继续执行:
options = webdriver.FirefoxOptions() options.page_load_strategy = 'eager' driver = webdriver.Firefox(options=options)
如果eager还是不行,可以试试none策略,完全不等待页面加载,之后自己通过显式等待来控制元素交互时机。
4. 强制终止卡住的加载进程
如果页面已经挂起,可以尝试用JS强制停止加载,再进行后续操作:
# 在第二次请求前或挂起时执行 driver.execute_script("window.stop();") # 然后再跳转或刷新 driver.get("https://your-second-sharepoint-site.com")
5. 检查驱动与浏览器版本兼容性
geckodriver和Firefox版本不匹配是这类无响应问题的常见根源。去Mozilla官方确认你当前Firefox版本对应的geckodriver版本,更新到兼容版本后再测试。
另外,你可以手动打开Firefox访问这两个站点,观察开发者工具的网络请求面板,看第二次访问时有没有一直处于pending状态的请求,这能帮你定位是哪个资源导致的挂起。
内容的提问来源于stack exchange,提问作者Wouter075
相关产品推荐
相关产品推荐

