I need to create a puppeteer script that will be able to send requests as well. I was using something that looks like this below
async function start() {
let item = {cin: "1234567"}
let request = require('request-promise').defaults({followAllRedirects:true})
async function loadPage(){
puppeteer.launch({ headless: false, executablePath: getChromiumExecPath() }).then(async browser => {
const page = (await browser.pages())[0]
await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36');
await page.setViewport({width: 1366, height: 768});
await page.evaluate(() => {
console.log(document.cookie)
let cookies = document.cookie
console.log(item.cin)
let dataString = `{${item.tcin}}}`
let atc = request.post({
headers : {
"accept": "application/json",
"accept-language": "en-US,en;q=0.9",
"content-type": "application/json",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"x-application-name": "web",
"cookie": `${cookies}`
},
referrer: "RANDOMURLHERE.com",
body: dataString
}).then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
})
return atc
}
} (item));
})}}
await loadPage
I get Error: Evaluation failed: ReferenceError: item is not defined. So I tried reading upon it. I ran into this forum Puppeteer: pass variable in .evaluate() So I tried
await page.evaluate((item) => {
console.log(document.cookie)
let cookies = document.cookie
console.log(item)
let datastring = `{${item.tcin}}`
let atc = request.post({
headers : {
"accept": "application/json",
"accept-language": "en-US,en;q=0.9",
"content-type": "application/json",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"x-application-name": "web",
"cookie": `${cookies}`
},
referrer: "UNIMPORTANT",
body: dataString
}).then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
})
return atc
}, (item.tcin));
It worked and I was able to see the value of item.tcin in the console. Now there was a new problem. Now I get Error: Evaluation failed: ReferenceError: request is not defined. So then I passed in request and then I get the same error with post. There has to be an easier way for me to use all of my variables and functions inside of a page.evaluate. If you know a solution please let me know and if you have any questions to clarify something please let me know. Also I should that the entire page.evaluate and the request inside works when I hardcode the item.tcin but that value changes so I can't hardcode it.