前言
在进行web自动化的时候,只有一个报错信息是不行的,往往需要截图来帮助我们来快速的定位问题,试想一下,我们在一个弹框里添加一些数据,点击保存后,然后在操作元素,这时selenium报错,说找不到这个元素,如果只看错误信息,那我们可能会以为是没找到这个元素,而前面的添加数据保存是成功的。那有没有这样的可能,当我们点击保存的时候,一个必填项的输入框由于元素的改变,而没有输入,这时候点击保存会提示有必填项没有填,所以问题是出在点击保存之前,而不是在点击保存之后。如果这时能保存到图,我们就能很方便的定位到问题
实战
# 打开百度首页截图,输入 python 搜索后截图
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
driver.get_screenshot_as_file(r'E:\1234.png') # 路径不存在不报错,但保存不了
sleep(2)
driver.find_element_by_css_selector('#kw').send_keys('python')
driver.find_element_by_css_selector('#su').click()
sleep(10)
driver.get_screenshot_as_file(r'E:\2345.png')
driver.quit()
注意:图片的后缀必须是png,如果不是png,则会报一个警告,在源码中也有说明
def get_screenshot_as_file(self, filename):
"""
Saves a screenshot of the current window to a PNG image file. Returns
False if there is any IOError, else returns True. Use full paths in
your filename.
:Args:
- filename: The full path you wish to save your screenshot to. This
should end with a `.png` extension.
:Usage:
driver.get_screenshot_as_file('/Screenshots/foo.png')
"""
if not filename.lower().endswith('.png'):
warnings.warn("name used for saved screenshot does not match file "
"type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
with open(filename, 'wb') as f:
f.write(png)
except IOError:
return False
finally:
del png
return True
if not filename.lower().endswith('.png') 如果不是以.png结尾,则会抛出警告
python爬虫之selenium--获取HTML源码断言和URL地址
python爬虫之selenium--设置浏览器的位置和高度宽度
python爬虫之selenium--页面元素是否可见和可操作
python爬虫之selenium--高亮显示正在操作的元素
转自:https://www.cnblogs.com/zouzou-busy/p/11182755.html