Эквивалентны ли эти две функции кукловода?
Эти 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, метод выдает ошибку.
Я читал в различных выпусках, что пользователи по-разному влияли на эти подходы в разных контекстах страницы. Иногда один из них работает правильно, а другой - нет.