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) ;
});

ただし、2 番目の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 が何をするのかは明確ではありませんが、違いがあるようです。残念ながら、私は Zombie.js で Behat/Mink を使用しており、Mink ドライバーのソースをハックして動作させる必要がありました。現在、そのドライバーを問題なく更新できないため、残念です...

于 2014-01-30T16:19:57.387 に答える