【问题标题】:How to run a Web Browser as a Daemon on a Server (without GUI)?如何在服务器上将 Web 浏览器作为守护程序运行(无 GUI)?
【发布时间】:2014-04-27 09:43:50
【问题描述】:

我希望有一个在我的 linux 服务器上作为守护进程运行的网络浏览器。浏览器应该有一个应用程序接口,以便我可以编写一个将这些命令发送到浏览器的脚本(伪代码):

set viewport size to 1024x768
turn javascript on
turn cookies off
enable loading of images
load http://facebook.com
wait for execution of javascript (max 10 sec)
scroll down 200 pixels
move mouse-pointer to 280,500 (relative to viewport)
wait again for execution of javascript (max 10 sec)
get browser content as DOM (encoded as tree of JSON object)
store viewport content as image to the file system
emulate click'n'drag from x,y=10,15 to 20,70 (coordinates relative to element with id="abc") 

有一些解决方案(例如 perl-modules)将网页的 html-code 加载到字符串中,也有将 html-strings 转换为 DOM-object-trees 的解决方案。加载嵌入的图像和链接也很容易。

但我没有找到能够执行 javascript 的解决方案(而且我不想编写 javascript 模拟器)。有许多网站使用 AJAX 等技术按需加载内容,我发现通过执行在服务器上运行的脚本来获取这些内容真的很困难。

而且我不知道应该怎么做才能生成网页的屏幕截图而不在 GUI 上显示网页。我想要一个无 GUI 服务器上的脚本来为我执行此操作。

所有常见的 Web 浏览器都可以执行 javascript,它们还可以在图形视口中显示 Web 内容。但是是否还有一个浏览器可以作为一个由外部脚本使用定义良好的 API 控制的守护进程来执行此操作?也许 Firefox 有一个插件可以将它变成一个守护进程?

【问题讨论】:

标签: batch-file browser scripting


【解决方案1】:

我一直在通过 Jenkins 在通过 Windows 服务连接的远程从站上运行的 Maven 作业中使用 selenium-firefox 驱动程序。我已经看到进程资源管理器启动 firefox 进程,执行 selenium 自动化并退出。

在您陈述的要求中,我不确定 selenium 是否支持 JSON 编码。但它可能会做其他所有事情,而且 JSON 部分也很容易工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多