ZombieJS - 如何调用JavaScript函数或检查JavaScript值?

时间:2012-04-08 21:47:30

标签: javascript jquery zombie.js

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

之类的事情

3 个答案:

答案 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驱动程序的源代码才能使它工作,这是令人失望的,因为我现在无法更新该驱动程序而没有问题......