Size: a a a

2019 December 30

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
Привет. Всех с Наступающим. Есть такой вопрос. На проекте с wdio всегда юзал xpath. На новом юзаю puppeteer и соответственно перешел на css селекторы. Правильно я понял, что элемент по тексту не найти таким способом?
но вообще puppeteer поддерживает xpath - https://pptr.dev/#?product=Puppeteer&version=v2.0.0&show=api-pagexexpression
источник

SC

Sergey Chepets in JS for testing
да, но page.waitForSelector, page.click(), page.type() на css.
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
да, но page.waitForSelector, page.click(), page.type() на css.
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
да, но page.waitForSelector, page.click(), page.type() на css.
короче прочитай всю доку хотя бы раз
источник

SC

Sergey Chepets in JS for testing
спасибо. Пойду рыть. Было бы неплохо использовать xpath
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
спасибо. Пойду рыть. Было бы неплохо использовать xpath
а по клик и тайп -

$x(‘…’).click()
источник

SC

Sergey Chepets in JS for testing
так не пройдет, $x возвращает массив вроде. Я с xpath начинал, но вроде где-то было так коряво, что решил на css
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
так не пройдет, $x возвращает массив вроде. Я с xpath начинал, но вроде где-то было так коряво, что решил на css
Так вроде или возвращает? 😉

и даже если массив -
$x(‘…’)[0].click()
источник

G

Gnam in JS for testing
Oleksandr Khotemskyi
покажи документацию
Я про jQuery :contains() selector 😅
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Я про jQuery :contains() selector 😅
так это не валидный css, это jquery
источник

G

Gnam in JS for testing
Ну чуть поплясать придется)
😅
источник

B

Bola in JS for testing
Sergey Chepets
спасибо. Пойду рыть. Было бы неплохо использовать xpath
А почему нельзя взять и ..... не попробовать? Мне кажется это быстро делается
источник

OK

Oleksandr Khotemskyi in JS for testing
Gnam
Ну чуть поплясать придется)
😅
ой не, на одном проекте начали юзать jquery для поиска элементов, а потом фронтендеры выпилили его со страницы. Это все превратилось в такие костыли что ужас. Там и докачка и подключение jquery в страницу, и ужас.
источник

OK

Oleksandr Khotemskyi in JS for testing
Я теперь никому никогда не рекомендую использовать jquery в тестах
источник

PP

Pavel Potapkin in JS for testing
в связи с этим  вопрос, а как  в cypress contains() реализован ?
источник

OK

Oleksandr Khotemskyi in JS for testing
Pavel Potapkin
в связи с этим  вопрос, а как  в cypress contains() реализован ?
а что там сложного? Нашел все элементы, взял текст, выкинул те элементы в которых текст не совпадает - вернул оставшееся
источник

G

Gnam in JS for testing
Ну сам я сейчас wdio пользую) там проще все, если хочешь по тексту найти элемент)
источник

SC

Sergey Chepets in JS for testing
Bola
А почему нельзя взять и ..... не попробовать? Мне кажется это быстро делается
попробовал. Получилось немного коряво, но учитывая, что все это во врапере, то норм
  async click(): Promise<void> {
   await page.waitForXPath(this.selector, { timeout: 4000 });
   return (await page.$x(this.selector))[0].click();
 }
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
попробовал. Получилось немного коряво, но учитывая, что все это во врапере, то норм
  async click(): Promise<void> {
   await page.waitForXPath(this.selector, { timeout: 4000 });
   return (await page.$x(this.selector))[0].click();
 }
да, пупетир довольно лоулевельный
источник

OK

Oleksandr Khotemskyi in JS for testing
Sergey Chepets
попробовал. Получилось немного коряво, но учитывая, что все это во врапере, то норм
  async click(): Promise<void> {
   await page.waitForXPath(this.selector, { timeout: 4000 });
   return (await page.$x(this.selector))[0].click();
 }
+ нет проверки видимости, есть вероятность что реальный юзер не сможет кликнуть на элемент, а пупетир да
источник