我需要扩展一个给定的项目。我找不到理想的解决方案,这就是我在这里寻求帮助的原因。 在具有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网络服务器时完全相同)。
有人知道这是什么错吗? 或者任何人都可以想象一个更优雅的解决方案?
非常感谢你的帮助。
答案 0 :(得分:0)
通过selenium启动firefox会话将授予您在运行时对firefox会话的完全控制权 例如:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.python.org")
使用custom profile并在启动Web浏览器的计算机上运行python脚本(或django服务器)应该可以让您完成您尝试做的所有事情