用户触发事件后,在伪造者中解析page.evaluate()

时间:2019-04-23 12:39:13

标签: javascript puppeteer

我正在运行page.evaluate(),它必须返回我在页面的输入字段中手动键入的内容。我写了一段我知道不会起作用的代码,但它表明了它的意图:

let inputText = await page.evaluate(() => {
    // some non-automated process done by hand
    let sendButton = document.querySelector(".button");
    sendButton.addEventListener("click", () => {
        let text = document.querySelector(".input").value;
        return text;
    }, false);
    // wait for text?

});
console.log(inputText);

如何使伪造者在page.evaluate()内部等待事件触发,然后将输入的文本返回到nodejs上下文?

1 个答案:

答案 0 :(得分:1)

您不能让ID_A P1 P2 P3 P4 ID_B Text 1 7 5 6 6 7 G 1 7 5 6 6 5 E 1 7 5 6 6 6 F 1 7 5 6 6 6 F 等待,但是可以使用exposeFunction注册回调函数。

evaluate

正如miyagisan所说,这是一个好主意,也可以返回承诺:

await page.exposeFunction('processInput', inputText => console.log(inputText));

await page.evaluate(() => {
    // some non-automated process done by hand
    let sendButton = document.querySelector(".button");
    sendButton.addEventListener("click", () => {
        let text = document.querySelector(".input").value;

        processInput(text);

    }, false);
});