Эквивалентны ли эти две функции кукловода?

Эти 2 фрагмента кода выбирают и щелкают один и тот же элемент?

Они практически эквивалентны?

await page.$eval('#loginForm > button', form => form.click());
const button = await page.$('#loginForm > button');
await button.click();

1 ответ

Решение

Не всегда.

Первый код просто использует Web-API HTMLElement.click().

Второй использует более сложный способ:

Этот метод при необходимости прокручивает элемент в поле зрения, а затем с помощью page.mouse щелкает по центру элемента. Если элемент отсоединен от DOM, метод выдает ошибку.

Я читал в различных выпусках, что пользователи по-разному влияли на эти подходы в разных контекстах страницы. Иногда один из них работает правильно, а другой - нет.

Другие вопросы по тегам