我正在寻找一个 Python 3 脚本,它可以打开和关闭 Firefox 选项卡并切换它们的焦点。我使用的是 Raspberry Pi 4 和最新的 Raspbian。
浏览器将显示一个非常占用 RAM 的 Grafana 仪表板(
Facebook
和 google
url 只是此处的示例)。为了让我的 Raspberry 保持活力,我必须大约每小时清理一次 RAM。唯一合适的解决方案似乎是关闭包含 Grafana 仪表板的 Firefox 选项卡,然后再次打开它。
为了尽可能快、好地完成此任务,我不想重新启动整个浏览器,但我只想关闭旧任务并打开一个新任务。这似乎有效。但我的问题是,创建选项卡后无法在选项卡之间切换。因此,当我创建新选项卡时,焦点将立即切换到新选项卡。因此,用户可以看到新的仪表板加载。如果新标签能够在后台加载并在加载完成后生效就更好了。
流程应该是这样的:
^^ 回到第2点^^
Python.ph
#!/usr/bin/env python
import time
import psutil
from selenium import webdriver
dr = webdriver.Firefox()
## (1)
dr.get('http://google.com‘)
while True:
time.sleep(10)
psutil.virtual_memory()
dict(psutil.virtual_memory()._asdict())
ram = psutil.virtual_memory().available * 100 / psutil.virtual_memory().total
## (2)
if ram <= 50:
## (3)
dr.execute_script("$(window.open('http://facebook.com‘))“)
## (4)
# HOW TO SWITCH FOCUS TO THE: Older tab?
## (5)
# Wait until the new tab is loaded
time.sleep(5)
## (6)
# HOW TO SWITCH THE FOCUS TO THE: Newer tab?
## (7)
# Close the older tab
dr.close()
要切换到最近打开的最后一个选项卡,您可以使用以下命令:
last_window = driver.window_handles[-1]
driver.switch_to.window(last_window)
同样,要切换到第一个窗口,您可以使用以下命令:
first_window = driver.window_handles[0]
driver.switch_to.window(first_window)
通常,如果您有
n
打开的选项卡,您可以使用 切换到
n-th
选项卡
nth_window = driver.window_handles[n-1]
driver.switch_to.window(nth_window)