16

我们需要从 C++ 应用程序执行一些相当复杂的 Web 自动化(登录到应用程序、执行一些操作、注销),但性能非常重要,因此我们正在寻找选项。

  1. 有没有办法直接从 C++ 驱动 WebKit 或其他无头引擎,而不需要在两者之间增加几层(如 selenium+webdriver+network 通信+...)?Chromedriver 也许?

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

4

2 回答 2

19

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

首先使用此链接:My fork of Webdriver++

还有一些 C++ 库可以完成这项工作。第一个是sekogan 的 Webdriver++,但最后一次提交是在 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;    
}
于 2017-08-16T22:30:31.930 回答
8

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

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

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

于 2013-06-27T15:10:50.563 回答