• 0
  • 0
分享
  • Python+Selenium操作浏览器全屏截图——软件测试圈
  • 曼倩诙谐 2022-06-07 14:14:49 字数 1551 阅读 3426 收藏 0

  最近碰到一个问题,需求是把做好的报告发到领导邮箱(只能发邮箱,不接受邮箱链接等方式),大家都知道outlook对js是不支持的,只支持最简单的html样式,最后选定的方法是截图,但是报告可能很长啊,怎么能一次性全截下来呢,请大家往下看!

  首先本次实现是用的python3.6+selenium+chrome,python的安装和python库的安装就不多说了。用代码控制chrome的时候需要下一个driver,下载地址:http://chromedriver.storage.googleapis.com/index.html

  下载之前要注意看看你电脑上装的chrome版本号,把下好的driver放到跟chrome.exe一个文件夹就行了。

1.jpg

  接下来直接上代码:

  # -*- coding: utf-8 -*-
  from selenium import webdriver
  from selenium.webdriver.chrome.options import Options
  import os
  import time
  def get_image(url, pic_name):
  #chromedriver的路径
      chromedriver = r"C:\Users\name\AppData\Local\Google\Chrome\Application\chromedriver.exe"
      os.environ["webdriver.chrome.driver"] = chromedriver
  #设置chrome开启的模式,headless就是无界面模式
  #一定要使用这个模式,不然截不了全页面,只能截到你电脑的高度
      chrome_options = Options()
      chrome_options.add_argument('headless')
      driver = webdriver.Chrome(chromedriver,chrome_options=chrome_options)
  #控制浏览器写入并转到链接
      driver.get(url)
      time.sleep(1)
  #接下来是全屏的关键,用js获取页面的宽高,如果有其他需要用js的部分也可以用这个方法
      width = driver.execute_script("return document.documentElement.scrollWidth")
      height = driver.execute_script("return document.documentElement.scrollHeight")
      print(width,height)
  #将浏览器的宽高设置成刚刚获取的宽高
      driver.set_window_size(width, height)
      time.sleep(1)
  #截图并关掉浏览器
      driver.save_screenshot(pic_name)
      driver.close()
  #你输入的参数
  url = 'https://movie.douban.com/top250'
  pic_name = r'D:\image.png'
  get_image(url, pic_name)

   

  很简单的几行代码,随意截任何网站的图片,通过这个方式也可以截网页任意部位的图,怎么样你学会了吗?



作者:hanfe1   

来源:http://www.51testing.com/html/67/n-4477067.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、现在在做功能测试,一般都是把软件界面和该软件的逻辑测试一下,工作大半年了想往性能测试方向转,感觉很多东西要学习,但是不知道从哪下手,请大神指点。有这种想转的思想很好。相信有很多和你同样情况的同学,同时,半年的经验一下子转过来是不可能的。首先,我建议在工作过程中在积累一年左右。主要是在做功能测试的同时,你可以自己搭建测试环境,加深对整个系统的理解,这个过程就在提高自己的学习能力和打下知识基础。被测项目用了哪些技能可以自己多多加深学习和理解。也就是在项目中自己更多的学习,利用工作中的测试项目充分学习。其次,学习一款性能测试工具。我本人不建议上来就学那些操作系统、数据库等知识。毕竟先从工具入手是...
            1 0 1977
            分享
          •   一、Charles介绍  Charles是一款用Java编写的代理软件,电脑或者手机访问网站首先会访问到Charles代理工具上,由代理工具再把访问数据转发到相应的网站上,所以可以很好的通过设置Charles,对接口的请求和响应进行加工处理。  Fiddler虽然也是代理工具,但是Charles比Fiddler更好的地方是Charles接口管理层次分明,Charles可以用在Mac平台上。  二、Charles功能  1.Charles  是一款Proxy代理工具  2.Throtte Seting  模拟弱网环境  3. DNS Spoofing  &nbs...
            0 0 1303
            分享
          • 什么是bug,英文直译过来叫虫,是指程序运行过程中出现的一些问题。任何人都有自己的问题,程序也是,更何况程序是开发人员写的。日常生活中直接冲到别人面前去嚷嚷:“喂,你这里有问题!”你觉得别人会愿意搭理你吗?而如果你有礼貌一点:“你好,我发现你这块有点不妥,换个方式应该会更好”效果会大不相同。同理,测试人员的日常工作中,最主要的就是报bug,bug提交的好,能够减少沟通成本,也会尽快提高软件质量。笔者特地总结了关于报bug的一些注意事项,分享给大家,遵守这些礼仪,可以让我们汇报bug的效果锦上添花。一、注明前置条件先来看下禅道上面默认的bug模板是什么样子的:步骤:是怎么操作出这个bug的,要尽...
            0 1 2917
            分享
          •   当地时间周四,社交媒体 Facebook 母公司 Meta 宣布,开始测试基于生成式人工智能的广告工具。  据悉,这些新的广告工具可以创建图像背景和变形文字等内容。Meta 高管在纽约举行的一场新闻发布会上表示。该公司计划邀请部分广告商在所谓人工智能沙盒(AI Sandbox)的“测试环境”中测试这些工具。  Meta 高管们拒绝透露一开始有多少广告商可以使用测试环境,只表示这个群体很小。  他们说,Meta 计划在今年 7 月份向更多广告商提供人工智能广告工具的访问权限,并在今年晚些时候将其中一些功能整合到普通广告产品中。  这一声明标志着 Meta 首次尝试推出使用生成式人工智能技术的...
            0 0 926
            分享
          • 背景最近在研究如何做接口测试,自己所在的项目,恰好使用的是 HTTP 协议,且内网通信可以直接用 Charles 抓包,能看到明文,自己试着用 Python 的 requests 库进行了收发包,发现可以正常通信,就自然而然的想到了,接口测试落地。之前的项目里,客户端源码也看过一些,网络通信部分也能看懂,但多多少少会有一些问题:序列化/反序列化、加密解密怎么处理?如果用现成代码,C#/Lua 得学;如果用 python 重写,成本太高。抱着侥幸心理,尝试寻找另一种解决方案:从 Python 里调用 C#/Lua 的东西,后来尝试未果。。项目解散,也就没能继续。过程经过探索,编写一条用例流程:构...
            0 0 768
            分享
      • 51testing软件测试圈微信