Size: a a a

2019 December 31

SC

Sergey Chepets in JS for testing
Не могу найти в puppeteer как получить html в ElementHandle
источник

SC

Sergey Chepets in JS for testing
elementHandle.toString() ?
источник

VB

Vitalii Budniak in JS for testing
чтото вроде innerHTML
источник

B

Bola in JS for testing
Кто-то обещал банить, если будут вопросы, которые легко гуглятся
источник

SC

Sergey Chepets in JS for testing
ну не так уже конечно и просто. Но гугл помог
источник

SC

Sergey Chepets in JS for testing
  async innerHtml(): Promise<string> {
   const element = await this.getElement();
   return page.evaluate((el) => el.innerHTML, element);
 }
источник

SC

Sergey Chepets in JS for testing
проще способа нет?
источник

AP

Alexander Penkov in JS for testing
Sergey    
const text = await page.evaluate(element => element.textContent, element);
?
источник

SC

Sergey Chepets in JS for testing
Походу пора уже домой - праздновать НГ, но последний вопрос в догонку. Девы используют вот такой вот селект https://github.com/JedWatson/react-select. У него обработка настроена только на onChange ивенты, т.е. когда я по нему кликаю папитиром, то генерится только onClick, и соответственно изменение стейта не выполняется. Кто сталкивался с подобным?
источник

AP

Alexander Penkov in JS for testing
у пупитра есть метод select  для дроп даунов, его пробовали ?
источник

SC

Sergey Chepets in JS for testing
Да. Пишет что для данного элемента нельзя вызвать select метод
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
Походу пора уже домой - праздновать НГ, но последний вопрос в догонку. Девы используют вот такой вот селект https://github.com/JedWatson/react-select. У него обработка настроена только на onChange ивенты, т.е. когда я по нему кликаю папитиром, то генерится только onClick, и соответственно изменение стейта не выполняется. Кто сталкивался с подобным?
Можно файрить ивент руками...
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
Походу пора уже домой - праздновать НГ, но последний вопрос в догонку. Девы используют вот такой вот селект https://github.com/JedWatson/react-select. У него обработка настроена только на onChange ивенты, т.е. когда я по нему кликаю папитиром, то генерится только onClick, и соответственно изменение стейта не выполняется. Кто сталкивался с подобным?
Но собственно это особенность работы пупетира. Селениум в этом плане "честней" генерит ивенты
источник

SC

Sergey Chepets in JS for testing
Не, у меня в селениуме была подобная проблема, когда работал с самописным селектом.
источник

OI

Oleksii Ihnatiuk in JS for testing
там же есть value аттрибут, можно по нему
источник

OI

Oleksii Ihnatiuk in JS for testing
могу скинуть свою реализацию
источник

SC

Sergey Chepets in JS for testing
Oleksii Ihnatiuk
могу скинуть свою реализацию
Да, пожалуйста
источник

OI

Oleksii Ihnatiuk in JS for testing
давно не обсырали мой код)
источник

OI

Oleksii Ihnatiuk in JS for testing
import { Page } from 'puppeteer';
import { forceElement } from '../utils/force';
import pFilter = require('p-filter');

export class DropDown {
 private readonly page: Page;
 private readonly rootSelector;

 constructor(page, selector) {
   this.page = page;
   this.rootSelector = selector;
 }

 async selectByOptionText(option: string): Promise<void> {
   const dropdown = await forceElement(this.page, this.rootSelector);
   const value = await this.getValueBy(option);
   await dropdown.select(value);
 }

 private async getValueBy(optionText: string): Promise<string> {
   const options = await this.page.$$(`${this.rootSelector} option`);
   const filtered = await pFilter(
     options,
     async (option) => {
       const text = await this.page.evaluate((node: Element) => node.textContent, option);
       return text === optionText;
     });
   if (filtered.length > 1) {
     throw new Error('');
   }
   const element = filtered[0];
   return (await element.getProperty('value')).jsonValue() as unknown as string;
 }
}
источник

OI

Oleksii Ihnatiuk in JS for testing
там нужно текст ошибки дописать только
источник