我需要在以下场景中自动化Web浏览器:
我有一台服务器和很多客户端。现在,只要服务器向客户端发送命令,客户端计算机就应该打开Web浏览器,浏览服务器提供的特定站点,加载该站点后,它应该向服务器发送加载该站点所需的确切时间。 任何工具或语言都可以。我的客户端PC运行Ubuntu作为操作系统。
此外,对于服务器和客户端之间的通信,我正在考虑使用Java套接字。只是想要一个关于它的知识。我是在正确的轨道上吗?
基本上我需要设置一个自动测试系统,通过一个命令从服务器中,所有客户端打开他们的Web浏览器并浏览要测试的特定网站。 安全威胁并不重要(截至目前),因为我拥有对这些测试机器的管理访问权限。
欢迎任何想法/建议。
答案 0 :(得分:2)
这个程序有两个部分,第一部分是服务器连接,一些客户端软件启动进程,第二部分是编写一个自动化Web浏览器的客户端。
即使您询问了有关java的问题,我也会提供一个c ++解决方案(在没有解决方案超过一个月的情况下,任何解决方案都比没有答案更好)
客户:
编写一个使用QWebView
类的Qt应用程序,基本上可以控制c ++应用程序中的浏览器。这非常简单,Qt文档在这方面有很大帮助。
让这个应用程序连接到Tcp Server应用程序(可以用c ++,java甚至python的任何语言编写)。客户端与此服务器之间的此tcp连接仅用于“发信号通知”客户端以开始加载特定页面。这可能是监视文本配置文件,该文件说明哪些客户端将加载哪个URL(依此类推......)。这个服务器也应该有一些方法可以“发信号”开始向客户端发送它们各自的启动信号(我个人通过stdin来做这个。)
Web Content Server:
就个人而言,我会为这部分使用django服务器。这将允许你使用python发信号通知另一个Tcp服务器启动(我有一个view
,当它在浏览器中启动时会发送'启动信号')。使用此方法的荣耀之处在于,您将能够拥有另一个接受来自每个客户端的POST的视图。每个POST都可以有哪个客户端发送它,加载了什么URL以及花了多长时间。
每个客户端都能够跟踪页面加载所需的时间。这可以通过在执行loadStarted()
方法后发出load(QUrl)
信号时启动计时器并在QWebView
发出loadFinished(bool)
信号时停止计时器来完成。然后可以将此信息POST回到django服务器(其model
定义可以很容易地将信息保存到数据库中。)