【发布时间】:2015-04-15 14:15:17
【问题描述】:
我正在使用CefSharp 来运行 AngularJS 应用程序。 CefSharp 有一个RegisterJsObject 的方法,它在任何客户端脚本执行之前将对象或属性分配到window。
我希望能够使用 Protractor 测试此功能,但我不确定如何在我的任何测试运行之前访问 window 并分配对象。由于我的应用程序依赖那些注册到window 的对象,我需要一种方法来硬编码或模拟它,没有注册的对象,我的应用程序继续抛出undefined 错误。
甚至可以从 Protractor 访问window 吗?理想的东西看起来像:
describe('my test', function () {
beforeEach(function () {
window.foo = "bar";
});
it('should do stuff', function () {
browser.get('index.html');
// do stuff
});
});
编辑:我试过了
describe('my test', function () {
it('should do stuff', function () {
browser.executeScript('return window.foo = { bar: {a: "b"}}').then(function () {
browser.get('#/');
browser.driver.manage().timeouts().implicitlyWait(10000);
});
});
但是当窗口实际加载时,我仍然看到cannot read property 'bar' of undefined。
编辑 2:甚至尝试过executeAsyncScript,但没有成功。
describe('my test', function () {
it('should do stuff', function () {
browser.executeAsyncScript(function(cb) {
window.foo = { bar: { a: "b" } };
cb(true);
}).then(function (cb) {
browser.get('#/');
browser.driver.manage().timeouts().implicitlyWait(10000);
browser.wait(function () {
element(by.id('some-element')).isPresent();
});
expect(element(by.id('some-element')).isPresent()).toBe(true);
});
});
});
【问题讨论】:
标签: angularjs protractor chromium-embedded