[英]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.