безголовый ложь - фокус всегда на адресной строке - PullRequest
1 голос
/ 24 апреля 2019

Я использую кукловодов с опцией headless=false, чтобы позволить пользователю вводить некоторые детали в форму, а затем читать результат программно.Я хочу, чтобы курсор / фокус был на первом поле ввода при загрузке страницы, но фокус всегда был на адресной строке.Есть ли способ переместить курсор / фокус внутри страницы?

Я уже пробовал await page.focus(selector).Пожалуйста, найдите приведенный ниже пример:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: false});
  const page = await browser.newPage();
  let selector = ".w3-white.w3-padding.notranslate>form>input[name='firstname']";
  await page.goto('https://www.w3schools.com/html/html_forms.asp');
  await page.waitForSelector(selector,{waitUntil :"networkidle2"});
  await page.focus(selector);
  await page.type(selector,"aaa");

  //await browser.close();
})();

Мне бы хотелось, чтобы после загрузки страницы пользователь мог вводить текст внутри поля ввода без необходимости сначала "перемещаться" в поле (с помощью мыши).или вкладка).

Ответы [ 2 ]

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

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

Чтобы браузер сфокусировал саму страницу, вам нужно вызвать page.bringToFront(), чтобы установить фокус браузера на вкладке. Вы должны сделать это сразу после создания страницы следующим образом:

const page = await browser.newPage();
await page.bringToFront();

Кроме того, как уже указывалось в другом ответе, вы задаете недопустимые параметры для функции page.waitForSelector. Кукольник просто игнорирует это (и не относится к вашей проблеме), но его следует удалить.

0 голосов
/ 24 апреля 2019

Есть одна небольшая вещь, которую нужно исправить, waitUntil - это опция для page.goto:

await page.goto('https://www.w3schools.com/html/html_forms.asp',{waitUntil :"networkidle2"});

С этим на месте ваш пример отлично работает с кукловодом 1.11 и узлом 8.6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...