使用Selenium Webdriver保存多个屏幕截图



我用以下代码从浏览器保存屏幕截图:

'''
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://google.com')
driver.get_screenshot_as_file('./google.png')
'''

但我想存不止一个。当文件名使用一次时,我如何更改它?

尝试在文件/屏幕截图名称中添加动态变量,如:

随机字符串生成器,例如:导入随机导入字符串

def get_random_string(length=10):
# choose from all lowercase letter
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))

或将time.time((转换为int((:

driver.get_screenshot_as_file(f'./screenshot_name{int(time.time())}.png')

或日期时间:

driver.get_screenshot_as_file(f'./screenshot_name{str(datetime.datetime.now())}.png')

所以,代码看起来是这样的:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://google.com')
driver.get_screenshot_as_file(f'./screenshot_name{get_random_string()}.png')
driver.quit()

顺便说一句,不要忘记添加driver.quit((命令结束。

提示:在代码末尾添加driver.quit()以自动关闭实例总是一种很好的做法。

在下面的代码中,您将获得同一页面的10张屏幕截图!

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://google.com')
driver.get_screenshot_as_file('./google.png')
for i in range(10):
driver.get_screenshot_as_file(f'./duckduckgo{i}.png')
driver.quit()

整个想法是,在这个for循环中,每次迭代都会将i插入到文件名中。所以你最终得到了10个屏幕截图

如果你想导航到其他地方,然后截图,你可以简单地在中间插入代码,然后使用不同名称的截图命令:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://google.com')
driver.get_screenshot_as_file('./google.png')
driver.get_screenshot_as_file(f'./duckduckgo1.png') #Taking screenshot with name ./duckduckgo1.png
#Some Code here
driver.get_screenshot_as_file(f'./duckduckgo2.png') #Taking screenshot with name ./duckduckgo2.png
driver.quit()

编辑:这应该适用于您的特定用例:

import datetime
from selenium import webdriver
num = str(datetime.datetime.now())
driver = webdriver.Firefox()
driver.get('https://google.com')
driver.get_screenshot_as_file('./google.png')
driver.get_screenshot_as_file(f'./duckduckgo{num}.png')
driver.quit()

这将命名屏幕截图/duckduckgo{currenttime}.png',这样你就永远不会有两个同名的文件!