【C# 使用selenium组件操作浏览器并且截图】

1.背景

需要完成一个统计报表的定时推送功能,所有定时打开统计报表界面进行截图。在网上找了一圈,最后决定使用selenium组件进行操作浏览器。

2.代码

 
using OpenQA.Selenium.Edge;
using OpenQA.Selenium;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Threading;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.Extensions;
using System.Xml.Linq;
using System.IO;namespace ScreenCutIamge
{public partial class Form1 : Form{public Form1(){InitializeComponent();this.formLoad();this.timer1.Start();   }public void formLoad(){this.txt_document.Text = "pageContentDIV";this.txt_path.Text = "D:\\cutimage";this.txt_scal.Text = "40";this.txt_url.Text = "https://www.baidu.com";}private void button1_Click(object sender, EventArgs e){this.cutImage();}private void cutImage(){var service = EdgeDriverService.CreateDefaultService(@".", "msedgedriver.exe");using (IWebDriver driver = new OpenQA.Selenium.Edge.EdgeDriver(service)){driver.Navigate().GoToUrl(this.txt_url.Text);  //driver.Url = "http://www.baidu.com"是一样的//var options = new InternetExplorerOptions();// string script = "document.body.style.transform='scale(0.5)'";// driver.ExecuteJavaScript(script);Thread.Sleep(10000);string script = "document.getElementsByClassName('" + this.txt_document.Text + "')[0].style.zoom = '" + this.txt_scal.Text + "%'";driver.ExecuteJavaScript(script);driver.Manage().Window.Maximize();driver.Manage().Window.FullScreen();//options.IgnoreZoomLevel = true;// options.// var driver = new RemoteWebDriver(options);ITimeouts timeouts = driver.Manage().Timeouts();//设置查找元素最大超时时间为30秒timeouts.ImplicitWait = new TimeSpan(0, 0, 30);//设置页面操作最大超时时间为30秒timeouts.PageLoad = new TimeSpan(0, 0, 30);//设置脚本异步最大超时时间为30秒timeouts.AsynchronousJavaScript = new TimeSpan(0, 0, 30);var source = driver.PageSource;// this.txt_scal.Text = source;Screenshot screenShotFile = ((ITakesScreenshot)driver).GetScreenshot();string imageName = "test" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";if (!Directory.Exists(txt_path.Text)){Directory.CreateDirectory(txt_path.Text);}imageName = txt_path.Text + "\\" + imageName;screenShotFile.SaveAsFile(imageName);}}private void timer1_Tick(object sender, EventArgs e){cutImage();}}
}

3.selenium官网

https://www.selenium.dev/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53.最大子序和(动态规划)

代码随想录 (programmercarl.com) 1143.最长公共子序列 与718的区别在于本题不需要是连续的,可以是在【不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串】 1.dp数组及下标含义 dp[i][j]:长度…

python pillow(PIL)库使用介绍

Python 图像库向 Python 解释器添加了图像处理功能。 该库提供了广泛的文件格式支持、高效的内部表示和相当强大的图像处理功能。 核心图像库旨在快速访问以几种基本像素格式存储的数据。它应该为通用图像处理工具提供坚实的基础。 概述 Python 图像库将图像处理功能添加到…

太阳光模拟器|百科

太阳光模拟器的功率 太阳光模拟器是一种能够模拟太阳光谱的仪器,它的功率对于太阳能行业来说至关重要。本文将从六个方面对太阳光模拟器的功率进行详细阐述,包括功率的定义、功率的计算、功率的影响因素、功率的调节方法、功率的应用以及未来的发展方向…

2024北京新能源电池及技术设备展-推动电池产业的持续发展

2024北京新能源电池及技术设备展-推动电池产业的持续发展 2024中国(北京)国际新能源电池技术及设备展览会 时间:2024年7月17-19日 地点:中国国际展览中心(顺义馆) 展会概况 受益于政策的支持&#xff0…

数据库选择题 (期末复习)

数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 数据库第十第十一章 恢复和并发简答题 2015期末 1、在数据库中,下列说…

Typescript---webpack和Babel的使用 03

webpack 通常情况下,实际开发中我们都需要使用构建工具对代码进行打包,TS同样也可以结合构建工具一起使用,下边以webpack为例介绍一下如何结合构建工具使用TS。 步骤: 初始化项目 进入项目根目录,执行命令 npm init -…

代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树、 108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#…

CAN通信-报文信号格式(Inter、Motorola)

DBC 1、Inter格式和Motorola格式2、制作DBC 1、Inter格式和Motorola格式 Inter格式(小端模式):高位字节存放在高地址中,低位字节存放在低地址中,数据表现:以一个字节为例,前半个字节为地位。 Motorola格式(大端模式)&…

免费SSL证书安全吗?

在互联网时代,网络安全已经成为了每个网民关注的焦点。而SSL证书,作为保障网络安全的重要工具,也越来越受到人们的关注。然而,市面上的SSL证书价格不菲,让许多小站长望而却步。这时,免费的SSL证书就显得十分…

【XR806开发板试用】+00. Win11环境下安装docker环境

很幸运得到XR806开发板的试用机会,在此深深感谢主办方给菜鸟一个机会。 之前开发的芯片主要是STM32、GD32之类的芯片,都是基于win环境的集成环境。现在拿到这块开发板感觉无从下手,就从安装docker环境开始,慢慢更新xr806的开发之…

开启新篇章!迅软科技牵手行业巨擘,引爆开门红!

新年甫至 迅软科技迎来喜气洋洋开门红 成功携手上海钊晟、成都邦飞科技等业界翘楚 为我们2024年决战注入了强劲动力 凝心聚力跃龙门,携手奋进开门红! 钊晟公司与迅软科技携手 共同构筑数据安全防护平台 上海钊晟传感技术有限公司是一家致力于传感…

数据库攻防学习

免责声明 本文仅供学习和研究使用,请勿使用文中的技术用于非法用途,任何人造成的任何负面影响,与本号及作者无关。 Redis 0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识,那么什么是redis?redis就是个数据库&#xff…

UI5与后端的文件交互(三)

文章目录 前言一、开发Action1. 修改Table2. BDEF中新增Action3. 新建结构,用于接收uuid以及附件数据4. 实现Method逻辑 二、UI5项目修改1. 添加表格行2. 事件处理函数3. 点击文件名时的事件 三、测试 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使…

【LMM 008】Instruction Tuning with GPT-4

论文标题:Instruction Tuning with GPT-4 论文作者:Baolin Peng, Chunyuan Li, Pengcheng He, Michel Galley, Jianfeng Gao 作者单位:Microsoft Research 论文原文:https://arxiv.org/abs/2304.03277 论文出处:– 论文…

stable diffusion 人物高级提示词(一)头部篇

一、女生发型 prompt描述推荐用法Long hair长发一定不要和 high ponytail 一同使用Short hair短发-Curly hair卷发-Straight hair直发-Ponytail马尾high ponytail 高马尾,一定不要和 long hair一起使用,会冲突Pigtails2条辫子-Braid辫子只写braid也会生…

Redis 持久化—RDB

文章目录 1. 为什么需要Redis持久化?2. Redis持久化的几种方式3. RDB简介4. 持久化触发4.1 手动触发4.1.1 save命令4.1.2 bgsave 命令 4.2 自动触发4.2.1 save m n4.2.2 flushall4.2.3 主从同步触发 5. 配置说明6. 配置配置7. 配置配置8. RDB 文件恢复9. RDB 优缺点…

擎创动态 | 某城商行案例入选信通院 GOLF+年度明星解决方案

2023年12月15日,“2023GOLF IT新治理领导力论坛”在京召开,该论坛由中国信息通信研究院、中国通信标准化协会主办。在此次论坛中,主办方正式发布了XOps领域年度评选结果。擎创科技“一体化智能根因定位解决方案”凭借优秀的落地实践成果&…

机器学习--主成分分析 PCA

特征维度约减 特征约减的目的是将高维特征向量映射到低维子空间中。比如: 给定n个样本(每个样本维度为p维){x1,....xn} 通过特征变换/投影矩阵实现特征空间的压缩: 高维数据 为何要维度约减? 数据压缩和存储:高维数据通常需要占用…

No Magic—复杂机电产品系统架构开发套件

产品概述 CATIA Magic,原名MagicDraw,俗称No Magic,被达索收购后融入3DExperience产品协同研发管理平台中,形成更具协同体验的系统工程解决方案。该软件提供对SysML/UML/UAF语言的完整支持,提供独有的MagicGrid方法论&…

易点易动固定资产管理系统集成企业微信,帮助企业全生命周期管理固定资产

在现代企业中,固定资产管理是一项至关重要的任务。固定资产的高效管理可以提高企业的运营效率、降低成本,并确保资产的安全和稳定。然而,传统的固定资产管理方法往往复杂繁琐,容易出现信息不准确、流程不畅和数据不一致的问题。为…