我试图提交hackerRank网站的挑战,通过自动化使用傀儡。单击“解决挑战”按钮后,代码将出现在下一页,但不会选择复选框元素,即“文本与自定义输入”
const puppeteer = require("puppeteer");
const url = "https://www.hackerrank.com/auth/login";
(async function () {
try {
const browserInstance = await puppeteer.launch({
headless: false,
slowMo: true,
args: ["--start-fullscreen"],
defaultViewport: null,
});
let newTab = await browserInstance.newPage();
await newTab.goto(url);
await newTab.waitForSelector("#input-1");
await newTab.click("#input-1");
let email = "some-email.com";
await newTab.type("#input-1", email, {
delay: 50,
});
let password = "some-password";
await newTab.waitForSelector("#input-2");
await newTab.click("#input-2");
await newTab.type("#input-2", password, {
delay: 50,
});
await newTab.click('button[data-analytics="LoginPassword"]', { delay: 50 });
await waitAndClick('a[data-attr1="algorithms"]', newTab);
await waitAndClick('input[value="warmup', newTab);
let allChallenges = await newTab.$$(
".ui-btn.ui-btn-normal.primary-cta.ui-btn-line-primary.ui-btn-styled",
{ delay: 50 }
);
await questionSolver(allChallenges[0], newTab);
console.log("Total Questions", allChallenges.length);
} catch (error) {
console.log(error);
}
})();
async function questionSolver(challenge, page) {
await challenge.click();
let inputIsClicked = await waitAndClick(".checkbox-input", page);
return inputIsClicked;
}
async function waitAndClick(selector, cpage) {
await cpage.waitForSelector(selector);
let selectorClicked = cpage.click(selector);
return selectorClicked;
}
发布于 2022-09-08 09:23:47
--这是在更新questionSolver函数之后为我提供的解决方案,如下所示
async function questionSolver(challenge, page, answer) {
await Promise.all([challenge.click(), page.waitForNavigation()]);
await waitAndClick(".checkbox-wrap", page);
await page.waitForSelector("textarea.custominput");
await page.type("textarea.custominput", answer, { delay: 10 });
}https://stackoverflow.com/questions/73640170
复制相似问题