2012-04-07 82 views
1

我需要在以下场景中自动化Web浏览器:通过服务器自动化Web浏览器

我有一个服务器和许多客户端。现在无论何时服务器向客户端发送命令,客户端计算机都应该打开Web浏览器,浏览服务器提供的特定站点,并且在加载该站点后,它应该向服务器发送准确加载该站点所用的时间。 任何工具或语言都会很好。我的客户端PC运行Ubuntu作为操作系统。

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

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

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

+0

这取决于目标客户。在我的情况下,它将成为一个测试中心,它将记录加载该网页所需的所有加载时间。没有安全问题! – Kameron 2012-04-07 16:14:18

+0

所以你有'管理员访问'这些机器? – 2012-04-07 16:18:16

+1

我删除了一些噪音。请编辑评论中的信息,回到答案中,以便更明显(希望您现在明白为什么它是相关信息)。 – 2012-04-07 16:22:09

回答

2

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

即使你的问题的关于Java的,我要去给人一种C++解决方案(任何解决方案是一个多月后比没有回答好没办法解决)

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

将此应用程序连接到Tcp Server应用程序(可以使用任何语言从C++,java甚至python编写)。这个客户端和这个服务器之间的tcp连接只会用来'发信号'给客户端开始加载一个特定的页面。这可能是监视一个文本配置文件,指出哪些客户端将加载哪个URL(如此...)。这个服务器还应该有一些方法来'发信号'开始向客户端发送他们各自的启动信号(我个人通过标准输入执行此操作)。

网页内容服务器: 就我个人而言,我会为这部分使用一个django服务器。这将允许您使用python来指示其他Tcp服务器启动(我有一个view,当在浏览器中提出时会发送“启动信号”)。使用这种方法的荣耀是,您将能够拥有另一个接受来自每个客户端的POST的视图。每个POST可以有哪个客户端发送它,加载了哪个url以及需要多长时间。

每个客户端都能够跟踪页面加载所花费的时间。这可以通过启动一个计时器来完成,当方法发出后loadStarted()信号发出,并且当QWebView发出loadFinished(bool)信号时停止计时器。然后这些信息可以POST回django服务器(它的定义可以很容易地将信息保存到数据库中)。

+0

使用这种方法,您仍然可以测试'任何'网站/ websever。您不必在django服务器上托管原始Web内容。实际上,如果您想要,TCP服务器可以管理所有事情,但使用django服务器可以让您使用已有的“自动”Web浏览器来保存,整理,然后非常轻松地分析和报告该数据的结果。 – g19fanatic 2012-05-16 14:03:09