我通过一个非常简单的测试来学习量角器:
describe('Tick Tack Toe game', function() {
it('marks positions as played', function() {
browser.ignoreSynchronization = true;
browser.get('file:///C:/Users/potero/angular/Angular_TickTackToe/ticktacktoe.html');
var p00 = element(by.id("p00"));
p00.click();
expect(p00.getText()).toEqual("X");
});
});
此测试几乎毫不费力地在Chrome中通过。但是我也必须在IE上进行测试,所以我在我的量角器配置文件中添加了必要的行,结果如下:
exports.config = {
seleniumAddress : 'http://localhost:4444/wd/hub',
specs : [ '../specs/**/*.protractorspec.js' ],
multiCapabilities: [{
'browserName': 'internet explorer'
}, {
'browserName': 'chrome'
}]
};
Chrome仍然通过了测试,但由于每个区域的保护模式设置不同,因此无法启动IE。我让他们平等,我在this SO question上读到了。然后IE启动但测试失败导致IE无法找到id为p00的元素(请查看上面的规范)。通过读取控制台上的错误输出,我看到IE selenium驱动程序的属性名为" ignoreProtectedModeSettings"这被设置为false。这引起了我的注意,所以我重置了IE中的保护模式设置,并在我的量角器配置文件中添加了一行,结果如下:
exports.config = {
seleniumAddress : 'http://localhost:4444/wd/hub',
specs : [ '../specs/**/*.protractorspec.js' ],
multiCapabilities: [{
'browserName': 'internet explorer',
'ignoreProtectedModeSettings': true
}, {
'browserName': 'chrome'
}]
};
IE测试通过了。每次我跑它。那么,为什么与安全设置有关的属性允许我使用Protractor选择器按id查找元素?
答案 0 :(得分:2)
保护模式背景
Internet Explorer的保护模式是一个安全沙箱,它依赖于Windows中的完整性级别系统。进程可能只有一个完整性级别(IL),因此如果您在Internet(保护模式,LowIL)和Intranet(非保护模式,MediumIL)站点之间导航IE实例,Internet Explorer必须在新进程中处理导航。在Vista上的IE7中,这非常明显 - 一个新的浏览器窗口会自动打开。在IE8中,随着Loosely-Coupled IE(LCIE)的推出,我们可以更巧妙地处理这个问题。