webdriver — веб-автоматизация от переполнения стека

Нам нужно сделать довольно сложную веб-автоматизацию из приложения C ++ (войти в приложение, выполнить некоторые действия, выйти из системы), но производительность действительно важна, поэтому мы ищем варианты.

  1. Есть ли способ управлять WebKit или другим без головы движок напрямую из C ++, без необходимости в нескольких промежуточных слоях (например, селен + вебдрайвер + сетевое взаимодействие + …)? Chromedriver возможно?

  2. Если вариант 1 невозможен, какой самый оптимальный способ запустить WebDriver (с реальным браузером) из C ++?

4

Решение

Вы должны посмотреть в PhantomJS (безголовый браузер WebKit), который поставляется с GhostDriver, которая является реализацией протокола WebDriver для PhantomJS.

Вам все еще нужно будет использовать один из Привязки к языку WebDriver, о которых я не знаю ни о каких языковых привязках в C ++, но, возможно, один из доступных языков мог бы использоваться вашей командой для целей автоматизации.

В худшем случае вы всегда можете создать свой скрипт WebDriver на Python и вызывать скрипт Python из своего приложения C ++.

2

Другие решения

Ты можешь использовать селеновый сервер а также 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;
}
5

По вопросам рекламы [email protected]