selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要所有的,只要某个元素。。。小编一会儿傻眼了,
苦心人,天不负,终于找到解决办法了。html
1.selenium提供了几个截取全屏的方法python
--这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True。
filename参数是保存文件的路径。web
driver.get_screenshot_as_file('/Screenshots/foo.png')面试
--这个方法也是获取屏幕截图,保存的是base64的编码格式,在HTML界面输出截图的时候,会用到。
好比,想把截图放到html测试报告里。浏览器
driver.get_screenshot_as_base64()测试
--这个是获取屏幕截图,保存的是二进制数据,不多用到.编码
driver.get_screenshot_as_png()code
2.selenium其实也提供了对元素截图的方法,可是会报错。听说只有Edge浏览器才能用,因此能够放弃。htm
1.以百度的搜索按钮为例,打印搜索按钮所在的位置:blog
# coding:utf-8 from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.baidu.com/') driver.save_screenshot('button.png') element = driver.find_element_by_id("su") print(element.location) # 打印元素坐标
2.返回结果:{'y': 233.0, 'x': 737.0},从返回的结果能够看出,返回的是一个字典类型数据
x表明横坐标,y表明纵坐标.(每一个人的电脑窗口大小不同,获得结果也不同, 不用纠结)
1.获取元素的大小,用element.size就能够获取到了。
element = driver.find_element_by_id("su") print(element.size) # 打印元素大小
2.返回结果:{'width': 100, 'height': 36},这个也字典类型,width是宽度,height是高度。
1.cmd打开,输入:pip install pillow
# coding:utf-8 from selenium import webdriver from PIL import Image driver = webdriver.Chrome() driver.get('http://www.baidu.com/') driver.save_screenshot('button.png') element = driver.find_element_by_id("su") print(element.location) # 打印元素坐标 print(element.size) # 打印元素大小 left = element.location['x'] top = element.location['y'] right = element.location['x'] + element.size['width'] bottom = element.location['y'] + element.size['height'] im = Image.open('button.png') im = im.crop((left, top, right, bottom)) im.save('button.png')
seleniumQQ群:646645429