gpt4 book ai didi

python - 如何在 Firefox 或 Chrome 中使用 Selenium webdriver 更改屏幕截图的目标目录

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:54 25 4
gpt4 key购买 nike

我想使用 Selenium webdriver with Python 制作网页的屏幕截图并将其保存在自定义位置。我尝试使用 Firefox 和 Chrome 将屏幕截图保存到自定义位置,但它始终将屏幕截图保存在项目目录中。这是我的 Firefox 版本:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.dir",
'C:\\Users\\User\\WebstormProjects')
binary = FirefoxBinary("C:\\Program Files\\Mozilla Firefox\\firefox.exe")


def foxScreen():
driver = webdriver.Firefox(firefox_binary=binary,
firefox_profile=profile)
driver.get("http://google.com")
driver.save_screenshot("foxScreen.png")
driver.quit()


if __name__ == '__main__':
foxScreen()

这是我的 Chrome 版本:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"download.default_directory": r'C:\\Users\\User\\WebstormProjects',
"directory_upgrade": True}
options.add_experimental_option("prefs", prefs)
chromedriver =
"C:\\Users\\User\\Downloads\\chromedriver_win32\\chromedriver.exe"


def chromeScreen():
driver = webdriver.Chrome(chrome_options=options,
executable_path=chromedriver)
driver.get("http://google.com")
driver.save_screenshot("chromeScreen.png")
driver.quit()


if __name__ == '__main__':
chromeScreen()

我尝试了不同的符号来表示我希望屏幕截图保存到的位置,但这似乎没有帮助。我应该更改什么以便它不会将屏幕截图保存到项目目录而是保存到给定的自定义位置?

最佳答案

您需要考虑以下几个事实:

profile.set_preference('key', 'value')

set_preference(key, value)firefox_profile 中设置我们想要的偏好 .当调用特定的 Firefox 配置文件 时,此首选项 生效。


save_screenshot(文件名)

根据文档 save_screenshot(filename)将当前窗口的屏幕截图保存到 PNG 图像文件。如果有任何 IOError,此方法返回 False,否则返回 True。 在文件名中使用完整路径

  • 参数:

    filename: The full path you wish to save your screenshot to. This should end with a .png extension.
  • 用法:

    driver.save_screenshot(‘/Screenshots/foo.png’)

因此,save_screenshot(filename) 需要您希望将屏幕截图保存到的完整路径。当您使用时:

driver.save_screenshot("foxScreen.png")

因此屏幕截图始终保存在项目目录中。


解决方案

要将屏幕截图保存在不同的目录中,您需要传递绝对路径,如下所示:

driver.save_screenshot("./my_directory/foo.png")

引用

您可以在 How to take screenshot with Selenium WebDriver 中找到详细的讨论

关于python - 如何在 Firefox 或 Chrome 中使用 Selenium webdriver 更改屏幕截图的目标目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com