Javascript 木偶演员:我怎样才能让浏览器对象分配给另一个变量而不被定义?
我一直在从事一个使用Puppeter打开浏览器页面的项目,我希望以后能够向同一个浏览器实例添加更多页面,因此我想知道返回浏览器对象的最佳方式是什么,或者将其分配给一组浏览器以存储它。总之,一旦我运行了浏览器,如果用户决定以后打开页面,我希望能够将页面作为新选项卡打开。你知道怎么做吗?提前谢谢 我的代码如下: index.js(主程序文件) *注意Javascript 木偶演员:我怎样才能让浏览器对象分配给另一个变量而不被定义?,javascript,node.js,puppeteer,chromium,Javascript,Node.js,Puppeteer,Chromium,我一直在从事一个使用Puppeter打开浏览器页面的项目,我希望以后能够向同一个浏览器实例添加更多页面,因此我想知道返回浏览器对象的最佳方式是什么,或者将其分配给一组浏览器以存储它。总之,一旦我运行了浏览器,如果用户决定以后打开页面,我希望能够将页面作为新选项卡打开。你知道怎么做吗?提前谢谢 我的代码如下: index.js(主程序文件) *注意控制台.log(浏览器[1])在控制台中返回undefined,因此不会传递浏览器对象 cursorspunted.js(页面功能文件的示例) acti
控制台.log(浏览器[1])
在控制台中返回undefined,因此不会传递浏览器对象
cursorspunted.js(页面功能文件的示例)
actions.js(具有浏览器可以执行的操作)
我运行浏览器,如果用户决定以后打开页面,我希望能够以新选项卡的形式打开页面
你们提到页面,但你们甚至并没有在任何地方使用这个方法
如果要在选项卡中打开多个页面,下面是一个简单的示例:
const puppeter=require('puppeter');
(异步()=>{
const browser=wait puppeter.launch({headless:false});
常量页=[];
pages.push(等待browser.newPage());
pages.push(等待browser.newPage());
等待页面[0]。转到('0')https://google.com');
等待页面[0]。屏幕截图({path:'google.png'});
等待第[1]页。转到('https://github.com/puppeteer/puppeteer');
等待页面[1]。屏幕截图({path:'puppeter.png'});
等待浏览器关闭();
})();
这与Puppeter的github页面的入门部分中的示例非常相似。感谢@pavelsaman的回复,我确实有这些页面,让我更新代码以显示我的所有文件。好的,您正在函数
runPage()
中打开新页面,该函数定义了其中的数组page
,因此,您在函数之外无法访问它。
let browsers = [];
async function runBrowser(pageID,browserID) {
const browser = await puppeteer.launch({
"headless": false,
"defaultViewport": null,
"args": ['--start-maximized'],
//"userDataDir": FULLPATH,
});
success = true;
browsers[browserID] = browser;
//CHANGE THE PAGE THAT OPENS
switch(pageID){
case 0:
login.openCursosPuntoD(browser);
break;
case 1:
facebook.openFacebookPuntoD(browser);
break;
case 2:
instagram.openInstagramPuntoD(browser);
break;
case 3:
twitter.openTwitterPuntoD(browser);
break;
case 4:
youTube.openYouTubePuntoD(browser);
break;
case 5:
webPage.openPaginaWebPuntoD(browser);
break;
default:
break;
}
};
runBrowser(1,1);
//HERE ONCE I RUN THE BROWSER I WANT TO BE ABLE TO OPEN PAGES AS NEW TABS IN IT LATER ON IF THE USER DECIDES TO
console.log(browsers[1]);
function openCursosPuntoD(browser){
actions.runPage('https://xxxxx.org/login/index.php',true,browser);
};
module.exports = {
openCursosPuntoD,
};
//FUNCTION TO OPEN PAGES
async function runPage(url,doLogin,browser){
const page = [];
const pageNumber = (await browser.pages()).length+1;
page[pageNumber] = await browser.newPage();
await page[pageNumber].goto(url);
if(doLogin == true){
var user = getUsername();
var pass = getPassword();
login(user,pass,page[pageNumber]);
}
else{}
}
//FUNCTION TO GET USERNAME
function getUsername(){
var content = fs.readFileSync('../data/user.txt','utf8');
var result = JSON.parse(content);
var username = result[Object.keys(result)[0]];
return username;
}
//FUNCTION TO GET PASSWORD
function getPassword(){
var content = fs.readFileSync('../data/user.txt','utf8');
var result = JSON.parse(content);
var password = result[Object.keys(result)[1]]
return password;
}
async function login(user,pass,p){
await p.type('#username', user);
await p.type('#password', pass);
await p.click('#loginbtn');
}