coldfusion - 确定IE的版本
问题描述
我们正在使用 Selenium 运行一个项目。由于这个项目使用 Cold Fusion,它需要 IE 而不是 Chrome。
我有一个测试,在这个站点上使用 IE 运行和执行了几个月。我们得到了一台装有 IE 的新机器并尝试运行它并收到一条错误消息,指出它需要 IE 5 或更高版本。哦。
我决定看看这台新机器有什么版本。桌面上的图标和关于 Internet Explorer 都显示 11.something(11 远高于 5)但我们仍然收到此消息。
我怀疑 IE 的安装可能不完整或不正确?我想知道是否有人知道我可以访问的网站,它会告诉我它认为我正在运行的 IE 版本。或者如果不是太难的话,如果我可以将它作为文件打开,我可以自己写一些东西。正如我所说,关于 Internet Explorer 认为它是 11。我想看看应用程序也认为它是什么。我无法真正联系我正在使用的网站的开发人员来询问他们,尽管他们必须能够弄清楚(或者 Cold Fusion 可以)。
解决方案
由于这个项目使用 Cold Fusion,它需要 IE 而不是 Chrome。
ColdFusion 只是生成 HTML 和 JavaScript,它本身并不关心您使用的是什么浏览器。然而,渲染的 JS 是另一回事。如果它是旧版本的 CF(< 版本 10)并且应用程序正在使用任何 CF 的内置 UI 小部件(如cfwindow
or cfpod
),那么 CF 创建的 JavaScript 可能正在检查文档对象模型 (DOM)中的某些内容,就像浏览器的User Agent String一样,在 MSIE 11 中不再存在或已更改。
默认情况下,Windows 8.1 上的 Internet Explorer 11 发送以下用户代理字符串:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
更有可能的是,罪魁祸首是:
PS:还要注意IE11模式下,
navigator.appName
属性返回Netscape
;旧版本返回Microsoft Internet Explorer
。新值匹配所有主要浏览器,包括 Safari、Chrome 和 Firefox。
充其量,您可能能够在兼容模式下运行 MSIE以完成您的 Selenium 脚本。
在最坏的情况下,您需要重构 CF 代码以不再使用这些 UI 控件,并将它们替换为像jQueryUI这样现代而简单的东西。
推荐阅读
- javascript - 正则表达式捕获 [] 之间的内容
- objective-c - 读取文件的 com.apple.progress.fractionCompleted 属性
- xpath - max() 输出正确的数字,count()="right number" 选择正确的节点,但是 count()=max() 失败
- spotfire - Spotfire:将值更改为字符串并保留其他值
- reactjs - Web 组件发出的事件可能无法通过 React 渲染树正确传播:我可能会遇到哪些可能的问题?
- c# - 在 C# WPF 中同时运行的多个 DispatcherTimer 实例
- javascript - 粘性导航栏的问题不会像应该那样滚动
- c++ - UB 何时发生,是否会使所有先前签订的合同无效?
- c - 如何调用函数
- c# - 未调用 OnStartCommand/OnCreate