C# Web自动化--Selenium入门

news2025/1/17 4:01:26

安装依赖库

需要引用的核心库是Selenium.RC,Selenium.Support,Selenium.WebDriver
在这里插入图片描述
然后再需要引用 浏览器驱动库,这里我以IE浏览器为例,Chrome使用方式跟IE是一样的,程序包名称为Selenium.WebDriver.ChromeDriver。
在这里插入图片描述

编写程序

using (IWebDriver driver = new ChromeDriver())
            {
                driver.Navigate().GoToUrl("http://www.baidu.com");  //driver.Url = "http://www.baidu.com"是一样的

                var source = driver.PageSource;

                Console.WriteLine(source);
            }

常用事件

Click : 点击元素。
ClickAndHold : 单击元素并保持按下的状态。
Release : 在元素上释放鼠标。
ContextClick : 单击鼠标右键。
DoubleClick : 双击元素。
MoveByOffset : 移动鼠标到特定位置或某个元素。
KeyDown : 按下键盘的某个按键。
KeyUp: 释放键盘的某个按键。
SendKeys : 向元素输入指定文本。
DragAndDrop : 拖拽元素。
DragAndDropToOffset : 拖拽元素到指定位置。
Build : 构建操作的链表。
Perform : 执行当前Built 的 Action。(即执行用户定义的一系列操作)

通过id获取元素

1 //by id
2 var byID = driver.FindElement(By.Id("cards"));

通过类名获取元素

1 //by class name
2 var byClassName = driver.FindElements(By.ClassName("menu"));

通过标签名获取元素

1 //by tag name 
2 var byTagName = driver.FindElement(By.TagName("iframe"));

通过名字获取元素

1 var byName = driver.FindElement(By.Name("__VIEWSTATE"));

通过链接文本获取元素

1 //by linked text  
2 //<a href="http://www.google.com">linkedtext</a>>  
3 var byLinkText = driver.FindElement(By.LinkText("linkedtext"));

通过部分链接文本获取元素

1 //by partial link text
2 //<a href="http://www.google.com">linkedtext</a>>
3 var byPartialLinkText = driver.FindElement(By.PartialLinkText("text"));

通过CSS选择器获取元素

1 //by css
2 var byCss = driver.FindElement(By.CssSelector("#header .content .logo"));

通过XPath来获取元素(XPath使用可以参考上一篇博客)

1  //by xpath
2  var byXPath = driver.FindElements(By.XPath("//div"));

执行JS

1 //execute javascript
2 var jsReturnValue = (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript("jsfunname");

获取元素的值和属性

1 //get element value and attribute value
2 var byIDText = byID.Text;
3 var byIDAttributeText = byID.GetAttribute("id");

模拟鼠标点击元素

1  //click
2  driver.FindElement(By.Id("copyright")).Click();

页面导航

1 //Navigation
2 driver.Navigate().Forward();
3 driver.Navigate().Back();

拖拽操作(可以实现滑动验证码的验证)

1 //Drag And Drop
2 var element = driver.FindElement(By.Name("source"));
3 IWebElement target = driver.FindElement(By.Name("target"));
4 (new Actions(driver)).DragAndDrop(element, target).Perform();

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

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

相关文章

静电ESD整改:原因、影响与解决方案详解?|深圳比创达电子

静电&#xff08;ESD&#xff09;是在日常生活和工作中常见的现象&#xff0c;但它可能对电子设备和器件造成严重的损坏。本文将介绍静电ESD的定义、原因、影响以及解决方案&#xff0c;帮助大家更好地了解ESD问题&#xff0c;并采取相应的整改措施。 一、静电ESD的定义 静电…

技术驱动校园招聘:Java+SpringBoot+Vue的实践之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【Linux操作系统】:Linux进程概念(2)

一、Z(zombie)-僵尸进程 1.僵尸进程概念 故事 张三每天都有跑步的习惯&#xff0c;这一天他和往常一样跑步&#xff0c;跑了两三圈&#xff0c;突然跑在它前面的一个人倒在地上不动了&#xff0c;作为热心市民张三赶紧报警并且拨打120。很快120就来了&#xff0c;但是没过几分…

Docker单机下的容器网络管理

Docker容器网络管理 容器网络类型 Docker安装以后&#xff0c;会在我们的主机上创建三个网络 docker network ls可以看到有bridge、host和none三种网络类型 我们先把ubuntu的网络环境配置一下 docker run -it ubuntu apt update apt install net-tools iputils-ping curl这…

移速u盘怎么恢复彻底删除的文件,移速u盘彻底删除的文件如何恢复

移速u盘怎么恢复彻底删除的文件&#xff1f;在日常使用中&#xff0c;我们经常会遇到需要删除U盘中的文件的情况。然而&#xff0c;有时候我们可能会不小心将重要的文件彻底删除&#xff0c;导致数据的丢失。对于移速U盘用户来说&#xff0c;如何恢复彻底删除的文件成为了一个备…

江科大stm32学习笔记——【6-1】TIM定时中断

一.定时器 1.类型 STM32F103C8T6定时器资源&#xff1a;TIM1,TIM2,TIM3,TIM4 我们这次用通用定时器 2.基本定时器 预分频器对来自RCC_TIMxCLK的72MHz进行预分频&#xff0c;比如写0就是不分频或1分频&#xff0c;输出频率输入频率72MHz。写1就是2分频&#xff0c;输出频率输…

Java复习01 集合概念

Java复习01 集合 在Java中&#xff0c;集合&#xff08;Collections&#xff09;是一种用来存储一组对象的结构。想象一下有一个装东西的箱子&#xff0c;这个箱子可以装很多不同类型的东西&#xff0c;例如书、DVD或者玩具。Java的集合也是这样&#xff0c;但是它专门用来装载…

如何利用工业以太网关实现上位机无线远程控制多台plc通讯?

组态软件与西门子S7系列PLC及三菱PLC间的无线通信测试需要用到以下设备&#xff1a; l 西门子PLC型号&#xff1a;S7-200Smart 2台 l 三菱PLC型号&#xff1a;FX5U 2台 l 上位机&#xff1a;力控V7.1 1台 l 无线通讯终端&#xff08;网口版&#xff09;——DTD418MB 3块…

群控软件代理,群控服务器配置要求

目录 前言 硬件要求 操作系统要求 代理软件要求 网络要求 1. 在群控服务器上安装Shadowsocks软件 2. 配置本地代理软件 3. 配置浏览器代理 前言 群控软件代理是指在进行群控活动时&#xff0c;利用代理服务器来隐藏真实的IP地址&#xff0c;以保护个人隐私或绕过一些网…

概率与常见的概率分布

概率是数据分析、机器学习中最基础的知识。也是在生活中最实用的一门学科&#xff0c;学了很多大道理不一定能过好一生&#xff0c;学好概率则有一定概率会变得更好。为大概率坚持&#xff0c;为小概率备份。 概率与分布 要想了解概率&#xff0c;首先得搞清楚概率和概率分布的…

「飞桨星河社区创作者激励计划」全新上线!丰富权益,等你领取~

为了助力更多的创作者实现在飞桨星河社区的成长&#xff0c;同时鼓励创作者们积极投入&#xff0c;记录创作者们的高光时刻&#xff0c;重磅推出**「创作者成长体系」&#xff0c;同时推出「每周精选&月度榜单」**活动&#xff0c;期待你一同加入精彩纷呈的AI学习与创作之旅…

学成在线_课程预览-视频播放测试_视频加载出错

问题 在进行课程预览界面的视频播放测试时界面提示视频加载出错。 如图所示JAVA特性讲解的第一小节视频加载出错。 查看课程计划会发现该小节已经进行了视频关联。 问题原因 此课程小节的关联视频在我们自己的minIO的桶中并不存在。所以前端从数据库中拿到的关联视频url是…

AI情报专刊来啦!《“AI换脸”威胁研究与安全策略》

目录 “AI换脸”常见的诈骗套路 1、伪造账号造谣传谣 2、冒充熟人进行诈骗 3、伪造身份申请银行贷款 4、“网络钓鱼”更加难以识别 5、冒充他人远程面试入职 6、冒名登录盗走银行余额 “AI换脸”的产业链 “AI换脸”使用到的技术 人脸识别和关键点检测 图像/视频合成技术 生成对…

【兔子机器人】修改GO、车轮电机ID(软件方法、硬件方法)以及修正VMC腿部初始化夹角

一、GO电机修改ID 1、硬件方法 利用上位机直接修改GO电机的id号&#xff1a; 打开调试助手&#xff0c;点击“调试”&#xff0c;查询电机&#xff0c;修改id号&#xff0c;即可。 但先将四个GO电机连接线拔掉&#xff0c;不然会将连接的电机一并修改。 利用24V电源给GO电机…

Redis命名设计

可读性和管理性 以项目名为前缀(防止key冲突)&#xff0c;用冒号分隔&#xff0c;比如项目名:表名:id zh(知乎):news_data(新闻数据):2(主键id) zh:news_data:2 精简性 key的命名&#xff0c;尽量精简&#xff0c;key的名字长度对内存的占用不可忽视&#xff0c;我们来实际…

成都产业园排名出炉!金牛区这个园区成数字产业聚集地

近日&#xff0c;成都产业园排名榜单正式发布&#xff0c;可以看出金牛区成数字产业聚集地&#xff0c;其中&#xff0c;备受瞩目的国际数字影像产业园荣登榜首。这一排名不仅彰显了国际数字影像产业园在数字产业领域的卓越表现&#xff0c;更凸显了成都作为西部重要城市在科技…

Redis及其常用命令(二)

SortedSet类型 在此类型中&#xff0c;每个元素都有一个分数 key -> string value -> sorted([socre,member],[score,member]...) # 添加元素 zadd key score member # 遍历集合 zrange key start stop [withscores] #升序 zrevrange key start stop [withscores]#降序…

如何“使用Docker安装compose,在CentOS7”?

1、下载地址 Releases docker/compose GitHub 2、下载好&#xff0c;上传服务器 3、 4、拷贝到/usr/local/bin/docker-compose目录下 cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose 5、变更权限 chmod x /usr/local/bin/docker-compose 6、启动 docker…

像SpringBoot一样使用Flask - 3.蓝图路由Blueprint

接上一篇文章《像SpringBoot一样使用Flask - 2.静态资源访问及模版》&#xff0c;我们看到测试的"controller"都写在了一起&#x1f914; 如何像Springboot一样划分出一个完整的controller&#xff0c;里面实现不同业务的包呢&#xff1f; 本篇引入Blueprint&#xf…

深入解析Condition的底层实现原理

一、原理概述 在AQS中&#xff0c;存在两个FIFO队列&#xff1a;同步队列和等待队列。等待队列是由Condition内部实现的&#xff0c;是一个虚拟的FIFO单向队列。 释义&#xff1a; AQS中tali和head主要构成了一个FIFO双向的同步队列&#xff0c;AQS中Condition构成了一个FIFO…