Событие изменения даты не запускается в браузере при выборе даты в средстве выбора даты с помощью сценария автоматизации puppeteer

#puppeteer

#puppeteer

Вопрос:

Не запускается событие изменения даты при выборе даты в средстве выбора даты с помощью puppeteer.

Используя приведенный ниже код в тестовом js

 await page.waitForSelector("#datepicker");    
const datepicker=await page.$("#datepicker");
await page.$$eval("input#datepicker",e=>e.value="11/05/2020") ;
await page.$$eval("input#datepicker",e=>e.blur());
  

Значение изменяется в средстве выбора даты, но событие изменения даты не возникает, поэтому данные на этой основе не изменяются на странице.

Ниже найдено решение, которое работает в консоли, но не работает с Puppeteer.

 const prevalue = await page.$$eval("input#datepicker", e => e[2].value);
await page.$$eval("input#datepicker", e => e[2].value = "24/10/2019");
await page.evaluate((preval) => $("input#datepicker")[2]._valueTracker.setValue(preval), prevalue)
const event = new Event('input', {
  bubbles: true
});
await page.evaluate((eve) => $("input#datepicker")[1].dispatchEvent(eve), event);
  

Получение ошибки:

 Failed to execute 'dispatchEvent' on 'EventTarget': parameter 1 is not of type 'Event'
  

Комментарии:

1. Не используйте eval, используйте для этого функции мыши / ввода. В противном случае react не обновит состояние.

2. мышь / тип не работает. Ниже найдено решение, которое работает в консоли, но не работает с Puppeteer. const prevalue= await page.$$eval(«input#datepicker»,e=>e[2].значение) ; await page.$$eval(«input#datepicker»,e=> e[2].значение =»24/10/2019″) ; await page.eval((preval)=>$(«input#datepicker»)[2]._valueTracker.setValue(preval),prevalue) const событие = новое событие (‘input’, { bubbles: true }); ожидает страницу.evaluate((eve)=> $(«input#datepicker»)[1].dispatchEvent (eve), событие); Ошибка: не удалось выполнить ‘dispatchEvent’ для ‘EventTarget’: параметр 1 не имеет типа ‘Событие’

3. Не используйте комментарии для совместного использования такого большого куска кода.