从extern操纵firefox的视图

时间:2014-07-05 20:42:32

标签: python linux firefox sh

我需要扩展一个给定的项目。我找不到理想的解决方案,这就是我在这里寻求帮助的原因。 在具有Linux的PC上,Firefox以全屏模式运行,并不断显示外部页面的内容。关心Firefox的deomen看起来大概是这样的:

export DISPLAY=:0.0
export START_REMOTE_CONTROL=1

startproc -s -l /dev/null -u A_USER -g A_GROUP  /PATH_TO_FIREFOX/firefox -private -url www.EXTERNAL_PAGE.com -fullscreen

此外,在作为Python Django网站实现的PC上运行了一个管理工具。在提供的站点上,人们可以登录到本地网络并管理一些事情。

现在应该添加什么: 在某个动作中,Django webserver(localhost / SPECIAL_PAGE)提供的站点应该在上面提到的firefox中暂时显示(直到再次关闭)。 这应该通过尽可能少的变化来实现。

我对标准网站没有任何影响(例如www.EXTERNAL_PAGE.com)。所以我无法实现为Python Webserver创建websocket的任何javascript,我可以用它来说:“现在从localhost / SPECIAL_PAGE加载内容。” 我的一个想法是在同一台PC上运行Firefox和Django网络服务器,获得订单的Django网络服务器可以使用带有localhost / SPECIAL_PAGE的shell命令打开一个新选项卡。 如果禁用特殊模式,此站点每半秒通过Ajax请求一次。 如果是这样,标签将通过Javascript关闭,原始状态将重新获得。

我试过自己的电脑,如果这样可行的话。它做了伎俩,但我注意到以下内容:Javascript不允许关闭它没有自己打开的标签。我在网上找到的解决方法都没有对我的版本起作用。 无论如何,如果设置dom.allow_scripts_to_close_windows设置为true,我确实发现它确实有效。但这不是一个好的解决方案,因为外部网站可以利用这种情况。 但如果找不到更优雅的解决方案,我可以接受这个。

无论如何,我现在使用管理网站在项目PC上尝试过它。简而言之:它没有成功。

我以前尝试打开Django Webserver中的选项卡的代码是:

from subprocess import call
call(["/PATH_TO_FIREFOX/firefox", "-new-tab",  "localhost/SPECIAL_PAGE"])

我认为它可能与由Deomon开始的Firefox有关,因此访问可能会有所不同(-u A_USER和-g A_GROUP在调用Firefox或Django网络服务器时完全相同)。

有人知道这是什么错吗? 或者任何人都可以想象一个更优雅的解决方案?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

通过selenium启动firefox会话将授予您在运行时对firefox会话的完全控制权 例如:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.python.org")

使用custom profile并在启动Web浏览器的计算机上运行python脚本(或django服务器)应该可以让您完成您尝试做的所有事情