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 背景 ...
随机推荐
- 《你不知道的JavaScript(上)》笔记——this全面解析
首先要理解调用位置: 调用位置就是函数在代码中被调用的位置(而不是声明的位置). 最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数). 我们关心的调用位置就在当前正在执行的函数的前一个 ...
- 【转载】 迁移学习与fine-tuning有什么区别
原文地址: https://www.cnblogs.com/fangpengchengbupter/p/8276204.html ----------------------------------- ...
- osg Shader 着色器
#ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osg/Group> #include <os ...
- win7电脑删除保存的凭据
win7电脑删除保存的凭据: 控制面板-> 用户账户 -> 管理您的凭据
- QML加载gif
AnimatedImage { anchors.fill: parent source: "qrc:/img/timg.gif" }
- web手工项目01-系统组织框架-测试流程-需求评审-测试计划与方案
回顾 SVN(定义,作用,使用操作) 软件缺陷(定义,表现形式,原因和根源,基本内容,跟踪流程) JIRA(基本介绍,使用者,工作流,问题,使用) 学习目标 掌握WAMP的环境搭建 掌握熟悉项目的步骤 ...
- 【Leetcode_easy】717. 1-bit and 2-bit Characters
problem 717. 1-bit and 2-bit Characters 题意:solution1: class Solution { public: bool isOneBitCharacte ...
- OpenGL学习笔记 之一 (基本的图形绘制)
参考网址:http://www.cnblogs.com/FredCong/archive/2012/10/13/2722893.html #include <glut.h> #includ ...
- 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
[DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...
- CenOS 7 java链接redis数据库
完整代码 public class App { public static void main(String[] args) { System.out.println("Hello Worl ...