Selenium vs Puppeteer для тестирования пользовательского интерфейса приложения CEF

Я планирую построить интеграционный тест для моего приложения CEF. Интеграционный тест сфокусируется на проверке пользовательского интерфейса приложения. Я думаю, что может быть два способа сделать это:

1. Use Selenium/webdriver + chromedriver: Selenium talks to chromedriver through
   webdriver protocol, and chromedriver talks to my CEF application through
   Chrome Devtools Protocol

2. Use Puppeteer or similar library that talks to CEF application directly
   through Chrome Devtools Protocol

Прежде всего, есть ли способ для Puppeteer подключиться к удаленному отладчику Chrome? Похоже, что большинство сценариев использования запускает Chrome без головы в Puppeteer, а это не то, чего я хочу.

Если оба варианта выполнимы, какой вариант вы бы предпочли? Puppeteer, кажется, обладает более широкими функциональными возможностями, чем Selenium, для тестирования пользовательского агента, реализующего протокол Chrome Devtools. Кроссплатформенная выгода от Selenium/webdriver кажется несущественной для тестирования приложения CEF.

1 ответ

Решение

Прежде всего, есть ли способ для Puppeteer подключиться к удаленному отладчику Chrome?

Да, есть puppeteer.connect, который позволяет подключаться к уже запущенному браузеру.

Если оба варианта выполнимы, какой вариант вы бы предпочли?

Учитывая, что вас интересует только Chromium, я бы выбрал кукловода. Скрипты кукловодов обычно не требуют добавления вызовов sleep() - вместо этого существуют мощные примитивы для ожидания условий, например page.waitForSelector, page.waitFoRequest и т. Д.