gpt4 book ai didi

javascript - Angular Protractor : Execute Scripts in Browser Context

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:00 24 4
gpt4 key购买 nike

在我的 index.html 中,我明确地说:

window.myAppInstance = new MyApp.myAppConstructor();

在我的 todo-spec.js 中,我有以下设置:

describe('my web page', function() {
it('should have a "myAppInstance" object on the window', function() {
browser.get('https://my.web.page.com');

function myTest() {
return Object.keys(window.myAppInstance).sort();
};

var p = browser.driver.executeScript(myTest);
p.then(function(ret) {
console.log("yay");
console.log(ret);
}, function() {
console.log("error");
console.log(arguments);
});
});
});

但是 Protractor 找不到我的应用程序。相反,它会找到 null 或 undefined:

error
{ '0':
{ [WebDriverError: unknown error: Cannot convert undefined or null to object
(Session info: chrome=50.0.2661.102)
... and more garbage

但是从 Chrome 的控制台,我可以运行

window.myAppInstance

很好,它会正确地打印出对象。

如何从我的 Protractor 测试中访问这个窗口对象?

编辑 1:更明确地说明构造函数。

编辑 2:在我的应用程序中,我使用的是 angular 的 manual bootstrapping .经过进一步调查,我可以将此行添加到我的测试中:

<snip>
browser.get('https://my.web.page.com');
**browser.pause()**
<snip>

我现在的步骤:1) 按 F12 调出 Chrome 的开发者工具2) 查看控制台。注意一个错误。我的应用程序崩溃了。3) 手动点击浏览器上的刷新按钮。4) 请注意应用程序如何刷新以及所有内容如何完美加载。摸不着头脑。得出结论,这可能是以某种方式以编程方式启动页面

browser.get('https://my.web.page.com'); 

与打开浏览器并输入该 URL 以破坏它完全不同。

我现在想知道,使用 Protractor 运行测试会导致我的应用失败吗?

最佳答案

可能存在时间问题 - 该值尚不可用,您可能需要等待:

function waitForKey() {
return browser.executeScript("return window.myAppXXXXXXXXXXXXX");
}

browser.wait(waitForKey, 5000);
var p = browser.executeScript(myTest);
// ...

关于javascript - Angular Protractor : Execute Scripts in Browser Context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37220213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com