基于Selenium的Protractor E2E测试在IE11无法运行:超时问题
我之前在IE11上跑Protractor测试时也踩过几乎一模一样的坑,结合我的排查经验,给你几个实用的解决方向:
1. 修正IE11的Protected Mode设置
这是IE驱动最常见的“坑”:IE的所有安全区域(Internet、本地Intranet、可信站点、受限站点)的Protected Mode必须保持一致(全部开启或全部关闭)。你可以手动打开「Internet选项」→「安全」标签页逐一调整;也可以在Protractor配置文件里添加以下配置临时跳过检查(不推荐长期依赖,建议还是手动调好系统设置):
capabilities: { browserName: 'internet explorer', ignoreProtectedModeSettings: true }
2. 延长超时时间适配IE的慢速度
IE11的执行速度远不如Chrome/Firefox,默认的超时阈值很容易触发失败。你需要在protractor.conf.js里做两处调整:
- 全局脚本超时:
allScriptsTimeout: 15000(默认是11000,调到15秒基本能覆盖大多数场景) - Jasmine测试用例超时:在测试文件开头添加
jasmine.DEFAULT_TIMEOUT_INTERVAL = 15000;
3. 关闭IE的增强保护模式
这个模式会拦截WebDriver向IE注入脚本,直接导致异步脚本错误。操作步骤:
打开「Internet选项」→「高级」标签页,找到增强保护模式选项,取消勾选后重启IE浏览器。
4. 升级WebDriver/IEDriverServer版本
你当前用的Selenium版本是2.53.1,这个版本和IE11的兼容性存在已知问题。建议:
- 升级到Selenium 3.x以上的稳定版本
- 匹配对应版本的IEDriverServer(优先选32位版本,64位IE11驱动容易出现不稳定情况)
5. 添加IE专属的稳定配置
在Protractor配置里补充这些IE特有的配置,能大幅提升稳定性:
capabilities: { browserName: 'internet explorer', enablePersistentHover: false, ie.edgeScroll: true, requireWindowFocus: true, // 强制IE获取焦点,避免交互操作失败 ie.ensureCleanSession: true // 每次测试前清空IE会话 }
你的测试错误信息:
【测试错误输出】Jasmine用例超时。正在重置WebDriver控制流。[19:03:47] ["should not allow Clifton to create a sub-folder inside a folder previously created by Emmett"] 失败:异步脚本中出现JavaScript错误。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:1.29秒 Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:3...
内容的提问来源于stack exchange,提问作者Abhishek

