Нам нужно сделать довольно сложную веб-автоматизацию из приложения C ++ (войти в приложение, выполнить некоторые действия, выйти из системы), но производительность действительно важна, поэтому мы ищем варианты.
Есть ли способ управлять WebKit или другим без головы движок напрямую из C ++, без необходимости в нескольких промежуточных слоях (например, селен + вебдрайвер + сетевое взаимодействие + …)? Chromedriver возможно?
Если вариант 1 невозможен, какой самый оптимальный способ запустить WebDriver (с реальным браузером) из C ++?
Вы должны посмотреть в PhantomJS (безголовый браузер WebKit), который поставляется с GhostDriver, которая является реализацией протокола WebDriver для PhantomJS.
Вам все еще нужно будет использовать один из Привязки к языку WebDriver, о которых я не знаю ни о каких языковых привязках в C ++, но, возможно, один из доступных языков мог бы использоваться вашей командой для целей автоматизации.
В худшем случае вы всегда можете создать свой скрипт WebDriver на Python и вызывать скрипт Python из своего приложения C ++.
Ты можешь использовать селеновый сервер а также JsonWireProtocol. В C ++ вы можете реализовывать CURL-запросы к серверу selenium и выполнять веб-автоматизацию с C ++.
Сначала воспользуйтесь этой ссылкой: Мой форк Webdriver ++.
Есть также некоторые библиотеки C ++, которые делают эту работу.
Первый Webdriver ++ от Sekogan но последний коммит был 3 года назад, и, похоже, пока что не все работает.
Второй мой форк Webdriver ++, Я исправил некоторые ошибки и сделал этот проект общей библиотекой, так что вы можете использовать его в любом проекте C ++.
Это пример того, как вы можете использовать мой Мой форк Webdriver ++.
#include <webdriverxx/webdriverxx.h>
using namespace webdriverxx;
int main() {
WebDriver firefox = Start(Firefox());
firefox
.Navigate("http://google.com")
.FindElement(ByClass("class_name"))
.SendKeys("Hello, world!")
.Submit();
return 0;
}