Кукольный мастер многострочный метод waitForFunction - PullRequest
1 голос
/ 08 апреля 2019

Я использую метод Кукловода page.waitForFunction():

await page.waitForFunction(`
    (window.hero.x - 1 === ${x} || window.hero.x === ${x} || window.hero.x + 1 === ${x} || window.hero.x === ${x}) && (window.hero.y - 1 === ${y} || window.hero.y === ${y} || window.hero.y + 1 === ${y} || window.hero.y === ${y}) || window.hero.x === ${x} && window.hero.y === ${y}
`);

Работает, но выглядит ужасно. Я хочу изменить его на многострочный. В документах есть:

page.waitForFunction(pageFunction[, options[, ...args]])

pageFunction <function|string> Функция для оценки в контексте браузера

Чтобы передать аргументы из node.js в предикат функции page.waitForFunction:

const selector = '.foo';
await page.waitForFunction(selector => !!document.querySelector(selector), {}, selector);

Я пытался так:

console.log(x,y); // 24 42
await page.waitForFunction((x, y) => {
    console.log(x, y); // undefined, undefined
    if(x && y) {
        return true;
    }
});

но x и y, которые я пытаюсь передать, не определены. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Вам нужно передать x и y - в настоящее время это параметры. Вы также можете немного упростить свою функцию:

await page.waitForFunction((x, y) => (x && y ? true : undefined), {}, x, y);
1 голос
/ 08 апреля 2019

Вам необходимо передать аргументы x и y в waitForFunction.

console.log(x,y); // 24 42
await page.waitForFunction((x, y) => {
    console.log(x, y); // undefined, undefined
    if(x && y) {
        return true;
    }
}, {}, x, y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...