如何在Firefox或Chrome中使用Selenium网络驱动程序更改屏幕截图的目标目录



我想制作一个网页的屏幕截图,并使用带有Python的Selenium网络驱动程序将其保存在自定义位置。我尝试使用Firefox和Chrome将屏幕截图保存到自定义位置,但它总是将屏幕截图存储在项目目录中

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在文件名中使用完整路径

  • Args:

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

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

因此,save_screenshot(filename)需要保存屏幕截图的完整路径

driver.save_screenshot("foxScreen.png")

因此,屏幕截图总是保存在项目目录中。


解决方案

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

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

参考

您可以在"如何使用Selenium WebDriver 进行屏幕截图"中找到详细的讨论

可以尝试添加更多选项。这对我有效:

prefs = {"download.default_directory": r"downloaddirectory",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True}

相关内容

  • 没有找到相关文章

最新更新