gpt4 book ai didi

javascript - 在 nightmareJS 中注入(inject) javascript 函数

转载 作者:行者123 更新时间:2023-12-03 13:24:00 24 4
gpt4 key购买 nike

我得到了一个 javascript 函数,我需要将其注入(inject)到页面中以获取稍后将使用的值列表。我可以使用 Chrome 控制台直接在网页上调用此函数,但我想在当前加载的网页上的 nightmareJS 中复制我在 Chrome 控制台中所做的操作。

这是功能:

 function getList() {
require(['Service/List'],
function (Service)
{
Service.getList
({
onComplete: function (listOfServices)
{
console.log('List:success:' + JSON.stringify(listOfServices));

},
onFailure: function (error)
{
console.log('List:error:' + error);
}
});
});
}

getList();

我尝试注入(inject)文件,但没有成功,我还尝试向该函数添加其他代码以将输出写入文件,但我认为它根本没有被调用。

这是 Nightmare JS
  describe('Open login page', () => {
it('Login', done => {
nightmare
.goto('http://loginURL.com')
.wait('input[type="text"]')
.wait('input[type="password"]')
.insert('input[type="text"]', 'username')
.insert('input[type="password"]', 'password')
.click('input[type="submit"]')
.evaluate(function() {
nightmare.inject('js', 'getList.js' )
})
//.inject('js', 'getList.js' )
.then(function() {
console.log('Done');
})
})

})
})

这是将 javascript 文件注入(inject)页面后的示例输出:
List:success:"Test":"https://someURL.com/resource/test","Design":"https://someURL.com/resource/Design"},"NewSpace":"https://someURL.com/resource/NewSpace","Generator":"https://Generator.someURL.com/resource/test","SomethingElse":"https://someURL.com/SomethingElse/test","Connection":"https://someURL.com/Connection/test","WorldWide":"https://someURL.com/resource/WorldWide","Vibes":"https://Vibes.someURL.com/resource/test","GoogleSearch":"https://someURL.com/resource/GoogleSearch",

我希望能够通过调用页面上的 javascript 文件来获取该输出并将其保存到文件中,以便以后可以使用它来调用该列表中的其他服务。

最佳答案

您可以阅读需要注入(inject)的本地javascript文件:

var fileData = [];
fileData.push(fs.readFileSync(path.resolve('../getList.js'), 'utf-8'));

它可以通过代码加载到页面的 head 部分:
browser.win
.evaluate(function(fileData) {
var elem = null;
for(var ii=0;ii<fileData.length; ii++ ) {
elem = document.createElement('script');
if (elem) {
elem.setAttribute('type', 'text/javascript'); //elem.src = localjs;
//console.log(fileData[ii]);
elem.innerHTML = fileData[ii];
document.head.appendChild(elem);
}
}

console.log("Testing loaded scripts");
console.log(getList());
return "Injected Scripts";
}, fileData)
.then(function(result) {
console.log(result);
}).catch(function(error) {
console.log("Load Error: ", error);
});

关于javascript - 在 nightmareJS 中注入(inject) javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com