首页 > 其他分享 >selenium之截屏操作

selenium之截屏操作

时间:2022-08-17 10:34:53浏览次数:95  
标签:webdriver screenshot selenium driver 截屏 操作 options

截屏

通过搜索文档,可以发现,Selenium 提供了以下两种类型的截屏功能:

  • [WebElement.screenshot(filename)][WebElement.screenshot]:该方法可以对元素进行截屏,如下代码所示:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_argument('headless')

with webdriver.Chrome(options=options) as driver:
    driver.get('https://www.jianshu.com')
    wait = WebDriverWait(driver,10)
    # 文章区域
    el = wait.until(EC.presence_of_element_located(
        (By.CSS_SELECTOR,'#list-container')
    ))
    # 浏览器窗口设置为元素大小,以保证能完全截取元素区域
    driver.set_window_size(el.size['width'],el.size['height'])
    el.screenshot('D:\\jianshu.png')
options = ChromeOptions()
options.add_argument('headless')

with webdriver.Chrome(options=options) as driver:
    driver.get('https://www.jianshu.com')
    wait = WebDriverWait(driver,10)
    # 文章区域
    wait.until(EC.presence_of_element_located(
        (By.CSS_SELECTOR,'#list-container')
    ))

    width = driver.execute_script("return document.documentElement.scrollWidth")
    height = driver.execute_script("return document.documentElement.scrollHeight")
    print(f'page scroll size: {width} x {height}')
    # 将窗口设置为页面滚动宽高
    driver.set_window_size(width, height)
    print('screenshot done') if driver.save_screenshot('D:\\jianshu.png') else print('screenshot failed!!')

注:截屏时我们需要将窗口的宽高设置为元素/页面滚动宽高,这样就可以完整截取整个元素/页面内容,但一个前提是必须使用 Headless 模式,否则窃取的只是当前视口高度内容。

标签:webdriver,screenshot,selenium,driver,截屏,操作,options
From: https://www.cnblogs.com/yunlong-study/p/16594153.html

相关文章

  • .NET ORM 操作ClickHouse数据库
    ClickHouse应用场景ClickHouse是俄罗斯的Yandex于2016年开源的用于在线分析处理查询(OLAP:OnlineAnalyticalProcessing)MPP架构的列式存储数据库(DBMS:DatabaseManag......
  • swap(a, b)异或骚操作方法
    众所周知,平日里我们如果要交换两个变量的时候,通常都是voidswap(inta,intb){inttemp=a;a=b;b=temp;}通过创建temp变量,保存其中一个的值,再交......
  • 【鸟哥 Linux 10.4】Linux Bash Shell 操作环境(包含通配符相关内容)
    【鸟哥Linux10.4】LinuxBashShell操作环境(包含通配符相关内容)Linux命令的路径搜寻顺序当我们在linux终端输入一行命令,系统是怎么直到我们要执行的是什么呢?其实系......
  • ES 增删改(关于文档的操作)
    1、create新增记录1.1新增记录不指定id,让es自动生成POSTlogs/_doc{"Level":"Warn","Content":"111"}结果如下:{"_index":"logs","_id":"Hd5v......
  • 了解使用Java语言操作数据库的API之JDBC
    一、简单了解JDBC是官方定义的一套使用Java语言操作数据库的API,各数据库厂商按照此标准定义各自的实现类,因此在使用JDBC操作不同的数据库时,需导入对应的驱动jar包。二......
  • java-代码操作服务器之SSH连续发送命令
    java操作Linux服务器可以使用专用的jar包,这里介绍使用jsch操作Linux服务器maven依赖<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactI......
  • Idea中Git的常用操作及可能存在的问题
    一、使用1、从git上下载项目(pull)(1)默认branch下载 (2)指定branch下载 2、提交项目到临时(commit) 2、上传项目到git仓库(push) 3、更新仓库中的项目(update) 4、切......
  • Windows10企业版LTSC操作系统自定义快捷键-2022年8月16日
      第1个快捷键: Alt+空格键作用:显示或者隐藏MayeLite主窗口 MayeLite一个更轻更简洁的快速启动工具https://blog.arae.cc/post/25842.htmlhttps://github......
  • 关于操作系统中的stack
    操作系统中的stack。从freertos的手册中可以看到每个任务都需要有一个stackspace。Autosar的操作系统中配置也有同样的定义。这样做的必要性因为是多任务。任何一个task......
  • 误操作使用fdisk删除了/root所在分区,该如何把文件拷贝出来
    误操作fdisk命令误操作,将/root所在分区删除后新建了……恢复尝试1起初以为是改一下/etf/fstab就好了,于是进入急救模式,尝试chroot/mnt/sysimage将原系统挂在至/......