var Browser = require("zombie");
// Load the page from localhost
browser = new Browser()
browser.visit("http://localhost:3000/", function () {
// Let's say the page has window.jQuery
// How do I access it?
});
那么,我如何访问窗口和javascript变量?我想检查一下我的脚本是否正确跟踪“点击”。我想做expect(browser.document.window.myScript.click_counter).toBe 5
。
答案 0 :(得分:4)
我得到了工作以下......设置了maxWait选项
var opts = {
debug: false
, runScripts: true
, maxWait: 10
, waitFor: 10000
};
this.browser = new Browser(opts);
this.browser.visit(url, callback);
this.browser.wait(function(window) {
console.log('wait...');
return window.document.querySelector("#objectid");
}, function(e, browser) {
console.log('wait complete ', e) ;
});
然而,第二个callback
方法永远不会触发,querySelector
调用始终失败。在javascript注入被触发后,我认为window.document
DOM不会更新。
[编辑]
我从browser.visit()
中删除了回调以使等待回调触发。
this.browser.visit(url);
答案 1 :(得分:1)
这取决于您存储变量的位置
如果将其存储在全局对象myScript
中,请使用:
browser.window.myScript.click_counter
如果你有类似myScript.click_counter = 5; document.myScript = { ... }
的内容,请使用:
browser.document.myScript.click_counter
答案 2 :(得分:1)
我需要将maxWait调高到100.这很奇怪,因为,假设它是以ms为单位,这很短,但在几秒钟之内,它是疯狂的长。它不是很清楚maxWait的作用,但它似乎有所作为。不幸的是,我正在使用Behat / Mink和Zombie.js,我不得不破解Mink驱动程序的源代码才能使它工作,这是令人失望的,因为我现在无法更新该驱动程序而没有问题......