我需要在以下场景中自动化网络浏览器:
我有一台服务器和许多客户端。现在,每当服务器向客户端发送命令时,客户端计算机都应该打开 Web 浏览器,浏览服务器提供的特定站点,加载该站点后,它应该向服务器发送加载该网站所需的确切时间。 任何工具或语言都可以。我的客户端电脑运行 Ubuntu 作为操作系统。
此外,对于服务器和客户端之间的通信,我正在考虑使用Java Sockets。只是想要有关它的信息。我走在正确的道路上吗?
基本上,我需要设备一个自动测试系统,在该系统中,只需从服务器发出一个命令,所有客户端就可以打开其网络浏览器并浏览要测试的特定网站。 安全威胁并不重要(到目前为止),因为我拥有这些测试机器的管理访问权限。
非常欢迎任何想法/建议。
最佳答案
这个程序有两个部分,第一部分是通过服务器连接一些客户端软件来启动该过程,第二部分是编写一个可以自动化 Web 浏览器的客户端。
即使你问了关于java的问题,我也会给出一个c++解决方案(任何解决方案都比一个多月没有解决方案后没有答案要好)
客户:
编写一个使用 QWebView
的 Qt 应用程序类本质上可以控制 C++ 应用程序中的浏览器。这非常简单,Qt 文档在这方面有很大帮助。
让此应用程序连接到 Tcp 服务器应用程序(可以用 c++、java 甚至 python 中的任何语言编写)。客户端和服务器之间的此 tcp 连接将仅用于“通知”客户端开始加载特定页面。这可能是监视一个文本配置文件,该文件说明哪些客户端将加载哪个 URL(等等...)。该服务器还应该有某种方式来“发出信号”,以开始向客户端发送各自的启动信号(我个人会通过标准输入执行此操作)。
网络内容服务器:
就我个人而言,我会在这部分使用 django 服务器。这将允许您使用 python 向其他 Tcp 服务器发出启动信号(我有一个 view
,当在浏览器中启动时会发送“启动信号”)。使用此方法的好处在于,您可以有另一个 View 来接受来自每个客户端的 POST。每个 POST 都可以包含哪个客户端发送的、加载的 url 以及花费的时间。
每个客户端都能够跟踪页面加载所需的时间。这可以通过在 loadStarted()
时启动计时器来完成。执行 load(QUrl)
后会发出信号方法并在 loadFinished(bool)
时停止计时器由QWebView
发出的信号。然后可以将此信息 POST 回 django 服务器(通过其模型定义可以轻松地将信息保存到数据库)。
关于java - 通过服务器自动化 Web 浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055710/