Python Selenium-不同名称的屏幕截图

Python Selenium-不同名称的屏幕截图,python,Python,我正在使用Selenium从URL列表中抓取一个屏幕截图。test.txt包括reddit.com、stackoverflow.com和spotify.com。在遍历此列表时,我希望它保存在文件夹中的截图中,文件名为url+'.png'。但它不起作用。我要么出错,要么它什么都不做就一直运行。 这一个有效,但它只是覆盖了旧的一个 screenshot = driver.save_screenshot('Screenshots/foo.png') 我希望它看起来像这样,但它不起作用: screen

我正在使用Selenium从URL列表中抓取一个屏幕截图。test.txt包括reddit.com、stackoverflow.com和spotify.com。在遍历此列表时,我希望它保存在文件夹中的截图中,文件名为url+'.png'。但它不起作用。我要么出错,要么它什么都不做就一直运行。 这一个有效,但它只是覆盖了旧的一个

screenshot = driver.save_screenshot('Screenshots/foo.png')
我希望它看起来像这样,但它不起作用:

screenshot = driver.save_screenshot('Screenshots/', line,  '.png')
我是python新手,但它也不能用+代替。 问题是它需要太多的争论

class Screenshot():

filehandle = open("test.txt", "r")
for line in filehandle:
    DRIVER = 'chromedriver'
    driver = webdriver.Chrome(DRIVER)
    driver.get(line)

    screenshot = driver.save_screenshot('Screenshots/foo.png')
    driver.quit()

对于这样一个简单的任务,创建一个屏幕截图类是不必要的

#!/usr/bin/env python
from __future__ import print_function

import os
from selenium import webdriver


def main():
    driver = webdriver.Chrome()

    # With automatically closes files when they go out of scope
    with open('test.txt', 'r') as f:
        for url in f.readlines():
            driver.get(url)

            # os.path.join should make it platform agnostic
            # Also remove any '/' from the url and replace to avoid any file system save issues
            sn_name = os.path.join('Screenshots', url.strip().replace('/', '-') + '.png')
            print('Attempting to save:', sn_name)

            # '.save_screenshot' returns false if it fails so throw exception
            if not driver.save_screenshot(sn_name):
                raise Exception('Could not save screen shot: ' + sn_name)

    # Close browser
    driver.quit()


if __name__ == '__main__':
    main()

如果在循环中执行
打印(行)
,它是否正确打印URL?是的,尽管行后有换行符,但此代码是否应该是
屏幕截图
类的一部分?或者那是偶然发布的?我一开始并没有看到这一部分。这是它的一部分,实际上它是整个班级的一部分,尽管它可能很大。哦,好的。这改变了一切。这不是一种方法吗?你发布的内容让它看起来像是在类名定义下的“自由浮动”(自由浮动不是一个技术定义,只是我用来描述它的外观的东西)。但是它并没有保存截图。它编译并打开下一行,但由于字符串末尾有换行符,因此无法保存任何内容。请参阅我的更新答案。不幸的是,这也不起作用。但是,条带确实删除了换行符(print(line.strip())