Protractor 5.3.0与Firefox 52、IE11不兼容问题咨询
我来帮你梳理下这个兼容问题的解决方案,分Firefox和IE11两个场景来处理:
一、针对Firefox 52.7.2(32位)的适配方案
Firefox 52是ESR长期支持版本,和Protractor 5.3.0、Selenium 3.6.0的搭配需要注意驱动匹配和配置细节:
修正配置冲突
你的protractor.conf.js里同时配置了directConnect: true和seleniumAddress,这两个选项是互斥的——directConnect直接调用浏览器驱动,不需要Selenium Server;而seleniumAddress是连接到Selenium Server。必须二选一,建议关闭directConnect改用Selenium Server,因为旧Firefox版本对directConnect的支持不佳:exports.config = { // directConnect: true, // 注释或删除这一行 seleniumAddress: 'http://localhost:4444/wd/hub', // 其他配置... }匹配正确的geckodriver版本
Selenium 3.6.0搭配Firefox 52.7.2,最合适的geckodriver版本是v0.19.0(32位),这个版本专门适配Firefox 52系列。下载后将其放到系统PATH中,或者在配置里明确指定路径:exports.config = { // 其他配置... geckoDriver: './path/to/geckodriver.exe', // 替换为你的32位geckodriver实际路径 multiCapabilities: [ { browserName: 'firefox', marionette: true, // 明确启用marionette驱动(Selenium 3默认启用,但旧版本建议显式设置) firefoxOptions: { binary: 'C:/Program Files (x86)/Mozilla Firefox/firefox.exe' // 明确指定32位Firefox安装路径 } } // 其他浏览器配置 ] }启动Selenium Server
确保你启动了对应版本的Selenium Server(3.6.0),命令如下:java -jar selenium-server-standalone-3.6.0.jar -Dwebdriver.gecko.driver=./geckodriver.exe
二、针对IE11的适配方案
IE11的适配问题大多来自驱动匹配和浏览器自身设置,按照以下步骤调整:
匹配IEDriverServer版本
必须使用和Selenium Server同版本(3.6.0)的IEDriverServer,注意选择对应系统位数的版本(如果你的IE是32位就下32位,64位则下64位)。下载后放到PATH中,或者在启动Selenium Server时指定路径:java -jar selenium-server-standalone-3.6.0.jar -Dwebdriver.ie.driver=./IEDriverServer.exe调整IE11的系统设置
这是IE自动化最容易踩坑的点,必须确保:- 打开IE11 → 「Internet选项」→「安全」标签,将四个区域(Internet、本地Intranet、受信任的站点、受限制的站点)的保护模式设置为相同状态(全部开启或全部关闭)
- 将IE的缩放级别设置为100%,避免元素定位偏移
- 关闭IE的「增强保护模式」(Windows 10用户在「Internet选项」→「高级」标签中查找)
配置IE的capabilities
在multiCapabilities中添加IE专属配置,解决常见的兼容性问题:multiCapabilities: [ { browserName: 'internet explorer', ignoreProtectedModeSettings: true, // 临时绕过保护模式检查(建议优先手动调整IE设置,而非依赖此配置) nativeEvents: false, unexpectedAlertBehaviour: 'accept', enablePersistentHover: true, 'ie.ensureCleanSession': true // 确保每次会话干净,避免缓存影响 } // 其他浏览器配置 ]
完成以上配置后,重新运行你的Protractor脚本,应该就能解决Firefox和IE11的兼容问题了。
内容的提问来源于stack exchange,提问作者J. Nee

