我在 node.js 中使用带有 Axios 的 puppeteer 编写了这段代码,它发出 POST 请求,获取响应并在 puppeteer 中使用该响应。
card = axios
.post('https://example.com/post', {
email: emailVal,
password: passwordVal
})
.then(async (res) => {
console.log(`STATUS CODE: ${res.data.statusCode}`)
let cardName = res.data.cardholder.name.split(" ")[0];
let cardLastname = res.data.cardholder.name.split(" ")[1];
let cardAddress = res.data.cardholder.billing.address.line1;
await page.waitFor(1000);
console.log('REDIRECTED TO ADDRESS')
await page.goto('https://example.com/address');
//await page.waitForNavigation({ waitUntil: 'networkidle0' }); // Wait for page to finish loading
await page.waitFor(10000);
await Promise.all([
await page.evaluate(()=>document.querySelector('#mobile-container > div > div > form > div > div:nth-child(2) > div > div > div.mex-add-new-payment-container.mt9-sm.flx-jc-md-fe.u-full-width.ta-sm-c.pt6-sm.pb6-sm.d-sm-flx.flx-jc-sm-c > div.flx-jc-md-fe.d-sm-h.d-md-flx.flx-jc-sm-c > button').click())
]);
console.log("OPENED ADDRESS POPUP")
await page.waitFor(10000);
const typeFirstName = await page.$('#givenName');
await typeFirstName.click({ clickCount: 3 })
await page.type('#givenName', cardName);
console.log('CARD NAME: ' + cardName)
console.log('CARD ADDRESS: ' + cardAddress)
await page.waitFor(5000);
const saveCard = await page.$('#modal-root > div > div > div > div > section > div.css-1h4dz32.e1eje3q30 > div > div > button');
await saveCard.click({ clickCount: 1 })
console.log('CLICKED SAVE')
})
.catch(error => {
console.error(error)
});
.then(async (res) 中的这部分代码被忽略了(就像它不存在一样)
console.log(`STATUS CODE: ${res.data.statusCode}`)
let cardName = res.data.cardholder.name.split(" ")[0];
let cardLastname = res.data.cardholder.name.split(" ")[1];
let cardAddress = res.data.cardholder.billing.address.line1;
await page.waitFor(1000);
console.log('REDIRECTED TO ADDRESS')
await page.goto('https://example.com/address');
//await page.waitForNavigation({ waitUntil: 'networkidle0' }); // Wait for page to finish loading
await page.waitFor(10000);
await Promise.all([
await page.evaluate(()=>document.querySelector('#mobile-container > div > div > form > div > div:nth-child(2) > div > div > div.mex-add-new-payment-container.mt9-sm.flx-jc-md-fe.u-full-width.ta-sm-c.pt6-sm.pb6-sm.d-sm-flx.flx-jc-sm-c > div.flx-jc-md-fe.d-sm-h.d-md-flx.flx-jc-sm-c > button').click())
]);
console.log("OPENED ADDRESS POPUP")
await page.waitFor(10000);
const typeFirstName = await page.$('#givenName');
await typeFirstName.click({ clickCount: 3 })
await page.type('#givenName', cardName);
console.log('CARD NAME: ' + cardName)
console.log('CARD ADDRESS: ' + cardAddress)
await page.waitFor(5000);
const saveCard = await page.$('#modal-root > div > div > div > div > section > div.css-1h4dz32.e1eje3q30 > div > div > button');
await saveCard.click({ clickCount: 1 })
console.log('CLICKED SAVE')
你知道我做错了什么吗?我无法在 then 函数之前删除 async,所以我在这一点上卡住了。