来自C++的Web自动化

Web automation from C++

本文关键字:自动化 Web C++ 来自      更新时间:2023-10-16

我们需要从C++应用程序进行一些相当复杂的web自动化(登录到应用程序,执行一些操作,注销),但性能确实很重要,所以我们正在考虑各种选项。

  1. 有没有一种方法可以直接从C++驱动WebKit或其他无头引擎,而不需要在它们之间多加几层(如selenium+webdriver+网络通信+…)?也许是彩色打印机?

  2. 如果选项1不可行,从C++运行WebDriver(使用真实浏览器)的最佳方式是什么?

您可以使用selenium服务器和JsonWireProtocol。在C++中,您可以实现对selenium服务器的CURL请求,并使用C++实现web自动化。

首先使用此链接:我的Webdriver++分支。

还有一些C++库可以完成这项工作。第一个是sekogan的Webdriver++,但上一次提交是在3年前,现在似乎并不是所有的东西都有效。第二个是我的Webdriver++分支,我已经修复了一些错误,并将这个项目作为共享库,所以你可以在任何C++项目中使用它。

这是一个如何使用我的Webdriver++的my fork的示例。

#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;    
}

您应该研究PhantomJS(一种无头WebKit浏览器),它附带了GhostDriver,这是PhantomJS的WebDriver协议实现。

您仍然需要使用其中一个WebDriver语言绑定,我不知道C++中有任何语言绑定,但您的团队可能会将其中一种可用语言用于自动化目的。

最糟糕的情况是,您可以始终使用Python创建WebDriver脚本,并从C++应用程序中调用Python脚本。