多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium实现chrome分屏截图的合并-自动化测试

更新时间:2022-04-24 09:15:07 作者:多测师 浏览:91

  selenium的截图功能在chrome下无法实现,但是可以操作滚动条来一屏一屏的截图,然后再合并成一张图,解决方案如下:

Selenium实现chrome分屏截图的合并-自动化测试

  def test_capture(url, w_pix,h_pix):

  try:

  self.driver.set_window_size(w_pix,h_pix)

  self.driver.get(url)

  self.driver.implicitly_wait(5)

  i = 0

  img_list = []

  while i<30:

  js="var q=document.body.scrollTop="+ str(i*wap_pixs[pix][1])+";"

  self.driver.execute_script(js)

  time.sleep(1)

  js1 = "return document.body.scrollHeight-document.body.scrollTop"

  s= self.driver.execute_script(js1)

  if h_pix >= s:

  break

  else:

  self.driver.save_screenshot(str(i)+'.png')

  img_list.append(str(i)+'.png')

  i += 1

  image_merge(img_list)

  except:

  print 'error'

  from PIL import Image

  def image_merge(images, output_dir='', output_name='merge.jpg', restriction_max_width=None, restriction_max_height=None):

  """垂直合并多张图片

  images - 要合并的图片路径列表

  ouput_dir - 输出路径

  output_name - 输出文件名

  restriction_max_width - 限制合并后的图片最大宽度,如果超过将等比缩小

  restriction_max_height - 限制合并后的图片最大高度,如果超过将等比缩小

  """

  def image_resize(img, size=(1500, 1100)):

  """调整图片大小

  """

  try:

  if img.mode not in ('L', 'RGB'):

  img = img.convert('RGB')

  img = img.resize(size)

  except Exception, e:

  pass

  return img

  max_width = 0

  total_height = 0

  # 计算合成后图片的宽度(以最宽的为准)和高度

  for img_path in images:

  if os.path.exists(img_path):

  img = Image.open(img_path)

  width, height = img.size

  if width > max_width:

  max_width = width

  total_height += height

  # 产生一张空白图

  new_img = Image.new('RGB', (max_width, total_height), 255)

  # 合并

  x = y = 0

  for img_path in images:

  if os.path.exists(img_path):

  img = Image.open(img_path)

  width, height = img.size

  new_img.paste(img, (x, y))

  y += height

  if restriction_max_width and max_width >= restriction_max_width:

  # 如果宽带超过限制

  # 等比例缩小

  ratio = restriction_max_height / float(max_width)

  max_width = restriction_max_width

  total_height = int(total_height * ratio)

  new_img = image_resize(new_img, size=(max_width, total_height))

  if restriction_max_height and total_height >= restriction_max_height:

  # 如果高度超过限制

  # 等比例缩小

  ratio = restriction_max_height / float(total_height)

  max_width = int(max_width * ratio)

  total_height = restriction_max_height

  new_img = image_resize(new_img, size=(max_width, total_height))

  if not os.path.exists(output_dir):

  os.makedirs(output_dir)

  save_path = '%s/%s' % (output_dir, output_name)

  new_img.save(save_path)

  for img_path in images:

  os.remove(img_path)

  return save_path

  以上内容为大家介绍了自动化测试中的Selenium实现chrome分屏截图的合并,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部