1

我需要在以下情况下自动化 Web 浏览器:

我有一台服务器和许多客户端。现在,每当服务器向客户端发送命令时,客户端计算机应该打开 Web 浏览器,浏览服务器提供的特定站点,并且在加载该站点后,它应该向服务器发送加载该网站所需的准确时间。任何工具或语言都可以。我的客户端电脑运行 Ubuntu 作为操作系统。

另外,对于服务器和客户端之间的通信,我正在考虑使用 Java 套接字。只是想要一个关于它的安慰。我在正确的轨道上吗?

基本上,我需要一个自动化测试系统,在该系统中,所有客户端只需通过一个命令从服务器打开他们的 Web 浏览器并浏览要测试的特定网站。安全威胁并不重要(截至目前),因为我拥有对这些测试机器的管理访问权限。

任何想法/建议都是最受欢迎的。

4

1 回答 1

2

这个程序有两个部分,第一部分是与一些客户端软件连接服务器以启动该过程,第二部分是编写一个将自动化 Web 浏览器的客户端。

即使你问了关于 java 的问题,我也会给出一个 c++ 解决方案(任何解决方案都比在一个多月没有解决方案后没有答案好)

客户端:编写一个 Qt 应用程序,该应用程序使用QWebView该类来实质上控制 c++ 应用程序中的浏览器。这非常简单,Qt 文档在这方面有很大帮助。

让这个应用程序连接到一个 Tcp 服务器应用程序(可以用 c++、java 甚至 python 的任何语言编写)。客户端和此服务器之间的此 tcp 连接将仅用于“通知”客户端开始加载特定页面。这可能是监视一个文本配置文件,该文件说明哪些客户端将加载哪个 URL(等等......)。该服务器还应该有某种方式可以“发出信号”以开始向客户端发送它们各自的启动信号(我个人会通过标准输入来执行此操作)。

Web 内容服务器:就我个人而言,这部分我会使用 django 服务器。这将允许您使用 python 向其他 Tcp 服务器发出信号以启动(我有一个 view在浏览器中启动时会发送“启动信号”的信号)。使用这种方法的好处是您可以拥有另一个视图,该视图接受来自每个客户端的 POST。每个 POST 都可能有哪个客户端发送它,加载了什么 url 以及花费了多长时间。

每个客户端都能够跟踪页面加载所花费的时间。这可以通过loadStarted()在执行该load(QUrl)方法后发出信号时启动计时器并loadFinished(bool)QWebView. 然后可以将此信息 POST 回 django 服务器(其model定义可以很容易地将信息保存到数据库)。

于 2012-05-16T13:55:59.197 回答