gpt4 book ai didi

javascript - 如何在 Node js 中执行类似于 goto 语句的操作,或者如何在异步函数中创建和调用函数?

转载 作者:行者123 更新时间:2023-12-02 23:17:11 27 4
gpt4 key购买 nike

我正在通过 puppeteer 运行自动化测试,该测试填写表格并检查验证码。如果验证码不正确,它会刷新到新图像,但随后我需要再次处理整个图像并到达之前用于处理它的函数。

(async function example() {
const browser = await puppeteer.launch({headless: false})
const page = await browser.newPage()

/*-----------NEED TO COME BACK HERE-----------*/
const tessProcess = utils.promisify(tesseract.process);
await page.setViewport(viewPort)
await page.goto('http://www.example.com')
await page.screenshot(options)
const text = await tessProcess('new.png');
console.log(text.trim());
await page.$eval('input[id=userEnteredCaptcha]', (el, value) => el.value = value, text.trim())
await page.$eval('input[id=companyID]', el => el.value = 'val');
const submitBtn = await page.$('[id="data"]');
await submitBtn.click();


try {
var x = await page.waitFor("#msgboxclose");
console.log("Captcha error")
}
catch (e) {
console.error('No Error');
}
if(x){
await page.keyboard.press('Escape');

/*---------GO FROM HERE--------*/
}

})()

我想创建一个循环,以便在验证码错误时可以再次处理图像

最佳答案

声明一个 bool 变量来指示是否需要重试,并将重复的功能放入检查该变量的 while 循环中。如果循环末尾的 x 条件未满足,请将 tryAgain 设置为 false,以便不再发生进一步的迭代:

(async function example() {
const browser = await puppeteer.launch({headless: false})
const page = await browser.newPage()
let tryAgain = true; // <--------------------------
while (tryAgain) { // <--------------------------
/*-----------NEED TO COME BACK HERE-----------*/
const tessProcess = utils.promisify(tesseract.process);
await page.setViewport(viewPort)
await page.goto('http://www.example.com')
await page.screenshot(options)
const text = await tessProcess('new.png');
console.log(text.trim());
await page.$eval('input[id=userEnteredCaptcha]', (el, value) => el.value = value, text.trim())
await page.$eval('input[id=companyID]', el => el.value = 'val');
const submitBtn = await page.$('[id="data"]');
await submitBtn.click();


try {
var x = await page.waitFor("#msgboxclose");
console.log("Captcha error")
}
catch (e) {
console.error('No Error');
}
if(x){
await page.keyboard.press('Escape');
/*---------GO FROM HERE--------*/
} else {
tryAgain = false; // <--------------------------
}
}

})()

关于javascript - 如何在 Node js 中执行类似于 goto 语句的操作,或者如何在异步函数中创建和调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123148/

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