首页 > 解决方案 > 有没有办法使用 Python 使用 Selenium 向 firefox 控制台发送命令(如“:screenshot”)?

问题描述

我正在处理一项自动化任务,该任务打开一个网页,从页面中截取一个元素,然后关闭页面并继续下一个。我之前使用 AutoHotKey 进行了设置,虽然它在技术上有效,但我想创建一个更精致的版本。到目前为止,Selenium 在自动导航页面方面运行良好,但是当我准备截取屏幕截图时,我似乎无法打开控制台来发出命令。我尝试使用

from selenium.webdriver.common.keys import Keys
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.SHIFT + 'K')

命令,但似乎 Firefox 没有收到输入。我也试过

from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(browser)
actions.send_keys(Keys.CONTROL + Keys.SHIFT + 'k')

再一次,这似乎没有用。

最后我尝试使用

browser.execute_script(":screenshot")

但我不断收到一个 JavaScript 错误,这是有道理的,因为 screenshot 命令不是 js。

如果你能想到我忽略的任何东西,请告诉我!提前致谢 :)

标签: pythonseleniumfirefoxscripting

解决方案


硒截图

例子

您可以使用以get_screenshot_as_file()文件名为参数的方法截取网页的屏幕截图。下面的程序使用 firefox 加载网页并截取屏幕截图,但任何网络浏览器都可以。

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()
driver.get('https://www.python.org')
sleep(1)

driver.get_screenshot_as_file("screenshot.png")
driver.quit()
print("end...")

屏幕截图图像将存储在与您的 Python 脚本相同的目录中。除非您明确定义必须存储屏幕截图的路径。


推荐阅读