当前位置:   article > 正文

Python + selenium如何截图!_python selenium元素截图

python selenium元素截图

废话不多说,直接进入正题

一、直接截取网页全屏

截全屏的时候,我们用到的内置方法为save_screenshot("demo1.png")

  1. from selenium import webdriver
  2. from time import sleep
  3. class test:
  4.     driver = webdriver.Chrome()
  5.     driver.maximize_window()
  6.     driver.get('https://www.baidu.com/')
  7.     sleep(2)
  8.     # 截取全屏
  9.     driver.save_screenshot("demo1.png")

运行成功之后,打开截图文件,如下所示:

二、截取页面上固定元素的图片

咱们以截取百度首页“百度一下”的按钮为例。

  1. from selenium import webdriver
  2. from time import sleep
  3. class test:
  4.     # 打开谷歌浏览器
  5.     driver = webdriver.Chrome()
  6.     # 网页全屏显示
  7.     driver.maximize_window()
  8.     # 访问百度首页
  9.     driver.get('https://www.baidu.com/')
  10.     # 强制等待2秒
  11.     sleep(2)
  12.     # 使用ID定位的方法获取"百度一下"的元素
  13.     element = driver.find_element_by_id("su")
  14.     # 截图
  15.     element.screenshot("element.png")
  16.     # 关闭浏览器
  17.     driver.quit()

运行之后,打开图片文件,如下图所示:

图片

  1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
  5. 可以免费学习!划重点!开源的!!!
  6. qq群号:691998057【暗号:csdn999

三、截取指定位置的图片

  1. from selenium import webdriver
  2. from time import sleep
  3. from PIL import Image
  4. class test:
  5.     driver = webdriver.Chrome()
  6.     driver.maximize_window()
  7.     driver.get('https://www.baidu.com/')
  8.     sleep(2)
  9.     driver.save_screenshot("baidu1.png")
  10.     element = driver.find_element_by_id("kw")
  11.     print("获取元素的坐标")
  12.     location = element.location
  13.     print(location)
  14.     print(element.size)
  15.     # 计算元素上、下、左、右的位置
  16.     top = element.location['y']
  17.     bottom = element.location['y'+ element.size['height']
  18.     left = element.location['x']
  19.     right = element.location['x'+ element.size['width']
  20.     print(topbottomleftright)
  21.     im = Image.open('baidu1.png')
  22.     im = im.crop((lefttopright,bottom))
  23.     im.show()
  24.     im.save("baidu2.png")

四、图片拼接

  1. from selenium import webdriver
  2. from PIL import Image
  3. driver = webdriver.Chrome()
  4. # 设置浏览器窗口最大化
  5. driver.maximize_window()  # 设置打开页面最大化,目的是更好的截取错误图
  6. # 打开税网
  7. driver.get("https://www.csdn.net/")
  8. 1. 截取当前页面
  9. driver.save_screenshot('result.png')
  10. def join_images(png1, png2size=0output='result.png'):
  11.     """
  12.     图片拼接
  13.     :param png1: 图片1
  14.     :param png2: 图片2
  15.     :param size: 两个图片重叠的距离
  16.     :param output: 输出的图片文件
  17.     :return:
  18.     """
  19.     # 图片拼接
  20.     img1, img2 = Image.open(png1), Image.open(png2)
  21.     size1size2 = img1.size, img2.size  # 获取两张图片的大小
  22.     joint = Image.new('RGB', (size1[0], size1[1]+size2[1]-size))    # 创建一个空白图片
  23.     # 设置两张图片要放置的初始位置
  24.     loc1, loc2 = (00), (0size1[1] - size)
  25.     # 分别放置图片
  26.     joint.paste(img1, loc1)
  27.     joint.paste(img2, loc2)
  28.     # 保存结果
  29.     joint.save(output)
  30. JS = {
  31.     '滚动到页尾'"window.scroll({top:document.body.clientHeight,left:0,behavior:'auto'});",
  32.     '滚动到'"window.scroll({top:%d,left:0,behavior:'auto'});",
  33. }
  34. # 获取body大小
  35. body_h = int(driver.find_element_by_xpath('//body').size.get('height'))
  36. # 计算当前页面截图的高度
  37. # (使用driver.get_window_size()也可以获取高度,但有误差,推荐使用图片高度计算)
  38. current_h = Image.open('result.png').size[1]
  39. image_list = ['result.png']  # 储存截取到的图片路径
  40. for i in range(1, int(body_h/current_h)):
  41.     # 1. 滚动到指定锚点
  42.     driver.execute_script(JS['滚动到'] % (current_h * i))
  43.     # 2. 截图
  44.     driver.save_screenshot(f'test_{i}.png')
  45.     join_images('result.png', f'test_{i}.png')
  46. # 处理最后一张图
  47. driver.execute_script(JS['滚动到页尾'])
  48. driver.save_screenshot('test_end.png')
  49. # 拼接图片
  50. join_images('result.png''test_end.png'size=current_h-int(body_h % current_h))

运行之后的结果为:

图片

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/896682
推荐阅读
相关标签
  

闽ICP备14008679号