selenium+python自动化82-只截某个元素的图转载
Posted 小曹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium+python自动化82-只截某个元素的图转载相关的知识,希望对你有一定的参考价值。
前言
selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要全部的,只要某个元素。。。小编一下子傻眼了,
苦心人,天不负,终于找到解决办法了。
selenium截图
1.selenium提供了几个截取全屏的方法
- get_screenshot_as_file(self, filename)
--这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True。
filename参数是保存文件的路径。
driver.get_screenshot_as_file(\'/Screenshots/foo.png\')
- get_screenshot_as_base64(self)
--这个方法也是获取屏幕截图,保存的是base64的编码格式,在html界面输出截图的时候,会用到。
比如,想把截图放到html测试报告里。
driver.get_screenshot_as_base64()
- get_screenshot_as_png(self)
--这个是获取屏幕截图,保存的是二进制数据,很少用到.
driver.get_screenshot_as_png()
2.selenium其实也提供了对元素截图的方法,但是会报错。据说只有Edge浏览器才能用,所以可以放弃。
location获取元素坐标
1.以百度的搜索按钮为例,打印搜索按钮所在的位置:
# 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代表纵坐标.(每个人的电脑窗口大小不一样,得到结果也不一样, 不用纠结)
size获取元素大小
1.获取元素的大小,用element.size就可以获取到了。
element = driver.find_element_by_id("su")
print(element.size) # 打印元素大小
2.返回结果:{\'width\': 100, \'height\': 36},这个也字典类型,width是宽度,height是高度。
安装pillow
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\')
以上是关于selenium+python自动化82-只截某个元素的图转载的主要内容,如果未能解决你的问题,请参考以下文章