簡體   English   中英

如何調用NightmareJs中的方法評估函數?

[英]How to call a method inside NightmareJs evaluate function?

我正在嘗試組織我的代碼以使用頁面對象模式,所以我基本上創建了一個模塊,其中我可以封裝頁面交互。

我想把這個轉過來:

it('my test step', (done) => {
        nightmare
            .wait()
            .evaluate(() => {
                return {
                    myname: document.querySelector('document-myname').innerHTML};
            })
            .then(({myname}) => {
                expect(myname).toEqual(`Jorge`);
            })
            .then(done, done.fail);
    });

進入:

 var page = require('../util/ui/mypage');

it('my test step', (done) => {
        nightmare
            .wait()
            .evaluate(() => {
                return {
                    myname: page.getMyName()};
            })
            .then(({myname}) => {
                expect(myname).toEqual(`Jorge`);
            })
            .then(done, done.fail);
    });

mypage.js

function getMyName() {
      return myname: document.querySelector('document-myname').innerHTML;
}


module.exports = {
     getName: getName,
};

我得到的是什么

 - Failed: page is not defined

您應該將page變量作為evaluate方法的回調中的第二個參數傳遞,如文檔中所述。 這是因為evaluate方法的回調具有獨立的范圍,因此node.js變量不能直接使用:

var page = require('../util/ui/mypage');

it('my test step', (done) => {
        nightmare
            .wait()
            .evaluate((page) => {
                return {
                    myname: page.getMyName()};
            }, page)
            .then(({myname}) => {
                expect(myname).toEqual(`Jorge`);
            })
            .then(done, done.fail);
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM