【问题标题】:Automate Web Browser via Server通过服务器自动化 Web 浏览器
【发布时间】:2012-04-07 15:26:41
【问题描述】:

我需要在以下场景中自动化网络浏览器:

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

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

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

欢迎提出任何想法/建议。

【问题讨论】:

  • 这取决于目标客户。就我而言,它将是一个测试中心,它将记录加载该网页所需的所有加载时间。没有安全问题!
  • 那么您对这些机器有“管理员权限”吗?
  • 我删除了一些噪音。请编辑 cmets 中的信息,然后返回答案以使其更明显(希望您现在明白为什么它是相关信息)。

标签: java web-services sockets ubuntu automation


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 使用此方法,您仍然可以测试“任何”网站/网络服务器。您不必在 django 服务器上托管原始 Web 内容。实际上,如果您愿意,TCP 服务器可以管理所有内容,但是使用 django 服务器可以让您使用已经“自动化”的网络浏览器来保存、组织,然后非常轻松地分析和报告这些数据的结果。
猜你喜欢
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 2017-06-01
  • 2017-02-05
  • 2014-08-06
  • 1970-01-01
  • 2016-06-04
  • 2014-11-21
相关资源
最近更新 更多