2
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

4

3 回答 3

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调用总是失败。我认为window.documentjavascript 注入触发后 DOM 不会更新。

[编辑]

我删除了回调browser.visit()以使等待回调触发。

this.browser.visit(url);
于 2012-12-06T11:06:40.470 回答
1

这取决于您存储变量的位置。
如果将其存储在全局对象myScript中,请使用:

browser.window.myScript.click_counter

如果你有类似的东西myScript.click_counter = 5; document.myScript = { ... },请使用:

browser.document.myScript.click_counter
于 2012-04-09T09:54:49.050 回答
1

我需要将 maxWait 提高到 100。这很奇怪,因为假设它以毫秒为单位,那很短,但以秒为单位,它的长度非常长。它不是很清楚 maxWait 的作用,但它似乎有所作为。不幸的是,我将 Behat/Mink 与 Zombie.js 一起使用,我不得不破解 Mink 驱动程序的源代码才能使其工作,这令人失望,因为我现在无法毫无问题地更新该驱动程序......

于 2014-01-30T16:19:57.387 回答