python - 有没有办法使用 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。
如果你能想到我忽略的任何东西,请告诉我!提前致谢 :)
解决方案
硒截图
例子
您可以使用以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 脚本相同的目录中。除非您明确定义必须存储屏幕截图的路径。
推荐阅读
- python - (Python)如何将一串字节恢复为原始字符串?
- angular - 映射特定对象数组类型的数据数组
- linux - 我们如何使用 bash 中的 for 循环将日期列表转换为 yyyymmdd 格式
- exchange-server - SubscribeToStreamingNotifications 中的异常
- ios - iPhone 拒绝了启动请求
- backbone.js - 骨干JS keydown 提交敌人而不是调用所需的功能
- css - 如何为输入边框设置动画?
- visual-studio-code - 我可以在不丢失扩展的情况下降级 Vscode 吗?
- python - 如何将结果保存到数据框中?
- javascript - 如何获取 onInit() 缩略图中的当前项目数 Fancybox 3