C#使用Selenium网页自动化
工作中很多时候经常需要网抓数据或者把数据填写到网站上,使用Selenium将其自动化是一种不错的选择。Selenium其实是一个用于Web应用程序测试的工具,测试你的应用程序看是否能够很好地工作在不同浏览器和操作系统之上。它可直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
1、在NuGet中下载Selenium.Chrome.WebDriver(v2.45.0)和Selenium.WebDriver(v3.141.0),然后引用using OpenQA.Selenium;和using OpenQA.Selenium.Chrome;
2、声明和实例一个ChromeDriver对象
IWebDriver driver = new ChromeDriver(System.AppDomain.CurrentDomain.BaseDirectory.ToString());
ChromeDriver总共有8个构造方法,这里我使用的是第4个方法。
ChromeDriver()、ChromeDriver(ChromeDriverService service)指定初始化ChromeDriver的服务、ChromeDriver(ChromeOptions options)指定ChromeDriver的选项、ChromeDriver(string chromeDriverDirectory)指定ChromeDriver.exe的目录路径、ChromeDriver(ChromeDriverService service,ChromeOptions options)、ChromeDriver(string chromeDriverDirectory,ChromeOptions options)、ChromeDriver(ChromeDriverService service,ChromeOptions options,TimeSpan commandTimeOut)指定了命令的等待执行时间、ChromeDriver(string chromeDriverDirectory,ChromeOptions options,TimeSpan commandTimeOut)
ChromeOptions参数设置可参考https://peter.sh/experiments/chromium-command-line-switches/和https://sites.google.com/a/chromium.org/chromedriver/capabilities,常用的有下面几个:
--user-agent=“” 设置请求头的User-Agent
--window-size=1366,768 设置浏览器窗口大小
--headless 无界面运行
--start-maximized 最大化运行
--incognito 隐身模式
--disable-javascript 禁用javascript
--disable-infobars 禁用浏览器正在被自动化程序控制的提示
var option = new ChromeOptions();
option.AddArgument("--incognito");
option.AddArgument("headless");
option.AddArgument("disable-infobars");
IWebDriver driver = new ChromeDriver(System.AppDomain.CurrentDomain.BaseDirectory.ToString(),option);
ChromeDriverService参数比较少用,可以参考https://ask.csdn.net/questions/758189,常用来设置命令行窗口不弹出:
var cdSvc = ChromeDriverService.CreateDefaultService();
cdSvc.HideCommandPromptWindow = true;
IWebDriver driver = new ChromeDriver(cdSvc);
但是使用了ChromeDriverService参数就不能指定ChromeDriver的目录路径了,很忧伤。
3、打开网址和设置元素查找时间限制
driver.Navigate().GoToUrl("http://dcga。。。");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds();
4、获取html元素并进行操作
driver.FindElement(By.XPath("//button[@class=\"btn try-out__btn\"]")).Click();
IWebElement tryit;
tryit = driver.FindElement(By.XPath("//textarea[@class=\"body-param__text\"]"));
tryit.Clear();
tryit.SendKeys("{\"docId\":\"111111111\"}");
如果返回的元素有多个,就得使用collection了,引用using System.Collections.ObjectModel;
ReadOnlyCollection<IWebElement> coll = driver.FindElements(By.XPath("//*[@id=\"operations-default-post_automation_api_va\"]/div/span[2]/a"));
5、其他一些可能使用的语句
driver.Manage().Window.Maximize();//窗口最大化
System.Threading.Thread.Sleep();//等待1秒
ReadOnlyCollection<string> windows = driver.WindowHandles;
driver.SwitchTo().Window(windows[]);//有新窗口弹出时切换
C#使用Selenium网页自动化的更多相关文章
- 后Selenium时代,网页自动化测试用Cypress
本文技术难度★★★,初学自动化测试的朋友慎点!否则会引起焦虑等不适症状,严重者会怀疑自己技术人生! 来自Cypress官网首页! Web开发飞速换代! table控制页面OUT了! 原生态手写网页OU ...
- python+selenium实现网页自动化与爬虫技术
举例某购物网站,通过selenium与python,实现主页上商品的搜索,并将信息爬虫保存至本地excel表内. 一.python环境与selenium环境安装 python在官网下载并安装并且设置环 ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Selenium Web 自动化 - 项目持续集成
Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备 1.1 安装git 1.2 安装jenkins 1.3 安装jenkins插件 1.4 jekins ...
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏览器 ...
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
- Selenium网页自动登录项目(基于Python从0到1)
Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. 本文讲述的是通过自动化的方式登陆某一网站,其中包含Selenium+python自动化项目环境如何部 ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- Selenium Web 自动化 - 项目持续集成(进阶)
Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置 2.1 SVN的安装及使用 2.2 新建Jenkins任务3 过程分析 1 背景 ...
随机推荐
- OpenSL ES: OpenSL ES 简介
1. OpenSL ES 是什么 OpenSL ES (Open Sound Library for Embedded Systems)是无授权费.跨平台.针对嵌入式系统精心优化的硬件音频加速API. ...
- 【集成模型】Bootstrap Aggregating(Bagging)
0 - 思想 如下图所示,Bagging(Bootstrap Aggregating)的基本思想是,从训练数据集中有返回的抽象m次形成m个子数据集(bootstrapping),对于每一个子数据集训练 ...
- Java 处理json字符串value中多余的双引号
转: Java 处理json字符串value中多余的双引号 一.错误场景 json字符串的value值中有多余的双引号 1.直接上错误的json字符串 1 String errorJsonStr = ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_06-方法授权-方法授权测试-无权限异常处理
现在没权限返回的信息 控制台抛出的异常是这个 : 不允许访问,这是Spring Security跑出来的 我们在异常处理器里面打个断点看一下 重新测试,就跳转到了异常捕获类这里. 这是异常的类型 这里 ...
- 【416】Ubuntu 配置
修改桌面主题:How to Install Desktop Themes on Ubuntu 18.04 LTS 命令行显示短路径:怎样ubuntu下命令行终端显示短路径 gedit 扩展插件:Use ...
- 【笔记】Docker部署Nginx,并修改配置文件
先来一个删除命令:) root@fudonghai:~# rm -rf /usr/docker/nginx/{conf.d,html,log} root@fudonghai:~# rm -r /usr ...
- (二)MVC项目+c3p0连接池
一.项目架构 注:删除了原有的数据库工具,添加了c3p0数据库工具类,添加了c3p0的配置文件,修改了Dao类以及servlet类 二.修改或添加的类 1.C3p0Helper(暂时不了解事务回滚之类 ...
- redis windows 扩展Redis igbinary 下载地址
http://windows.php.net/downloads/pecl/releases/redis/3.1.2/ http://windows.php.net/downloads/pecl/re ...
- selenium + python 环境配置 (三)之启动chrome
安装启动chromedriver的方法和ie类似 2.启动chrome 即selenium调用ChromeDriver打开Chrome浏览器 ①下载并解压,你会得到一个chromedriver.exe ...
- IntelliJ IDEA 联想代码