2012-04-08 21 views
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 5ZombieJS - 如何調用JavaScript函數或檢查JavaScript值?

回答

1

這取決於您存儲變量的位置。
如果它存儲在一個全局對象myScript,使用方法:

browser.window.myScript.click_counter 

如果您有類似myScript.click_counter = 5; document.myScript = { ... },用途:

browser.document.myScript.click_counter 
+0

The腳本異步加載。如何檢測何時加載?這就是爲什麼我無法訪問它。 – CamelCamelCamel 2012-04-09 16:47:44

+1

你可以使用這裏描述的'browser.wait' API:https://github.com/assaf/zombie/blob/master/doc/API.md – mihai 2012-04-09 20:19:00

+1

不幸的是,它似乎沒有工作。你能提供一個代碼示例嗎? – CamelCamelCamel 2012-04-11 06:58:44

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.documentDOM在JavaScript注入後被更新。

[編輯]

我刪除從browser.visit()回調,使等待回調火災。

this.browser.visit(url); 
1

我需要曲柄MAXWAIT高達100這是奇怪的,因爲,假設在MS的,這是短暫的,但在幾秒鐘內,它的瘋長。它不太清楚maxWait的作用,但它似乎有所作爲。不幸的是,我用Zombie.js使用Behat/Mink,並且我必須破解Mink驅動程序的源代才能使其工作,這是令人失望的,因爲我現在無法更新該驅動程序,現在沒有問題...