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