如果要做百度文库,百度贴吧,百度知道签到,你,会怎么做?前不久我还会觉得这好像太麻烦了,now,soeasy。

自动化测试工具:Selenium

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 ,Chrome,Firefox,IE,PhantomJS(一个基于webkit内核的无界面浏览器)等。

在.net framework下Selenium的使用

  1. 新建解决方案,控制台项目
  2. 添加NuGet包:Selenium.WebDriver 3.5.1 Selenium.Support 3.5.1
  3. 通过NuGet下载Phantomjs或者手动下载驱动,设置环境变量
    • Selenium.PhantomJS.WebDriver //无头浏览器 无界面
    • Selenium.Chrome.WebDriver //需要下载浏览器 ,运行时会打开浏览器
    • Selenium.Firefox.WebDriver //需要下载浏览器

简单使用示例

使用PhantomJS驱动保存百度首页截图

    var driver = new PhantomJSDriver();//创建浏览器
driver.Navigate().GoToUrl("http://www.baidu.com");//打开百度
//截图保存
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
//退出
driver.Quit();

点击百度搜索然后截图

    var driver = new PhantomJSDriver();//创建浏览器
driver.Navigate().GoToUrl("http://www.baidu.com");//打开百度
driver.FindElement(By.Id("kw")).SendKeys("Selenium");
driver.FindElement(By.Id("su")).Click();
Thread.Sleep(3000);//搜索结果显示出来再接图
//截图保存
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile("baidu.jpg", ScreenshotImageFormat.Jpeg);
//退出
driver.Quit();

登录博客园发个闪存

源码地址:https://coding.net/u/yimocoding/p/WeDemo/git/tree/SeleniumDemo/SeleniumDemo

百度文库,百度贴吧,百度知道签到

要是用模拟请求的方式得累死个人。

  static void 百度签到()
{
dynamic loginUser = new
{
UserName = "yimo",
UserPwd = "123456"
};
var myDriver = new PhantomJSDriver();//创建浏览器
var defTask = new List<string>() { "文库", "贴吧", "知道" };
const string _loginUrl = "https://passport.baidu.com/v2/?login";
//跳转页面
myDriver.Navigate().GoToUrl(_loginUrl);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__userName")).SendKeys(loginUser.UserName);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__password")).SendKeys(loginUser.UserPwd);
myDriver.FindElement(By.Id("TANGRAM__PSP_3__submit")).Click(); Console.WriteLine(myDriver.Title); if (defTask.Contains("文库"))
{
const string _wkSignUrl = "https://wenku.baidu.com/task/browse/daily";
Console.WriteLine($"开始百度文库签到");
myDriver.Navigate().GoToUrl(_wkSignUrl);
myDriver.ExecScript("$('.bg').remove();$('.g-btn-pass').click();");
Console.WriteLine("百度文库签到完成");
Thread.Sleep(1000);
myDriver.SaveImg("文库签到.png");
}
if (defTask.Contains("贴吧"))
{
const string _tiebaUrl = "https://tieba.baidu.com/index.html";
Console.WriteLine("开始百度贴吧签到");
myDriver.Navigate().GoToUrl(_tiebaUrl);
myDriver.FindElement(By.ClassName("onekey_btn")).Click();
myDriver.FindElement(By.ClassName("sign_btn_nonmember")).Click();
Console.WriteLine("百度贴吧签到完成");
Thread.Sleep(1000);
myDriver.SaveImg("贴吧签到.png");
}
if (defTask.Contains("知道"))
{
const string _tiebaUrl = "https://zhidao.baidu.com/";
Console.WriteLine("开始百度知道签到");
myDriver.Navigate().GoToUrl(_tiebaUrl);
myDriver.FindElement(By.ClassName("go-sign-in")).Click();
myDriver.FindElement(By.ClassName("sign-in-btn")).Click();
Console.WriteLine("百度知道签到完成");
Thread.Sleep(1000);
myDriver.SaveImg("知道签到.png");
}
//退出
myDriver.Quit();
}

淘宝领取淘金币

  static void 淘金币领取()
{
dynamic loginUser = new
{
UserName = "yimo",
UserPwd = "123456"
};
var myDriver = new PhantomJSDriver();//创建浏览器
const string _loginUrl = "https://login.taobao.com/member/login.jhtml";
const string _taoUrl = "https://taojinbi.taobao.com/index.htm";
//跳转页面
myDriver.Navigate().GoToUrl(_loginUrl);
//账号登录
myDriver.FindElement(By.Id("J_Quick2Static")).Click(); myDriver.FindElement(By.Id("TPL_username_1")).SendKeys(loginUser.UserName);
myDriver.FindElement(By.Id("TPL_password_1")).SendKeys(loginUser.UserPwd);
myDriver.FindElement(By.Id("J_SubmitStatic")).Click();
myDriver.Navigate().GoToUrl(_taoUrl); myDriver.FindElement(By.ClassName("J_GoTodayBtn")).Click();
//滑动验证码
Actions action = new Actions(driver);
var source = driver.FindElement(By.ClassName("btn_slide"));
if (source == null)
{
return;
}
action.ClickAndHold(source).MoveByOffset(300,0);
action.MoveToElement(source).Release();
IAction actions = action.Build();
actions.Perform();
}

Ctrl+F5,截图保存成功

常用接口

var driver=new PhantomJSDriver();//驱动实例

  1. INavigation接口: 浏览器导航接口(前进,后退,刷新),接口实例:driver.Navigate()
  2. IOptions接口: 浏览器信息接口(Cookie,设置窗口等操作),接口实例:driver.Manage()
  3. IWebElement 通过driver.FindElement()筛选获取到元素信息(Text等),可以对元素赋值(SendKeys())单击(Click())等操作

常用操作

  • 窗口最大化:driver.Manage().Window.Maximize();
  • Cookie操作接口获取:driver.Manage().Cookies
  • 执行js:((IJavaScriptExecutor)driver).ExecuteScript("document.body.innerHTML='Selenium'");
  • 截图:((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("保存路径.png", ScreenshotImageFormat.Png);
  • 拖动,文章介绍参考
  var driver = new PhantomJSDriver();
By by=By.ClassName("btn_slide");
int x=300,y=0
Actions action = new Actions(driver);
var source = driver.FindElement(by);
if (source == null)
{
return;
}
action.ClickAndHold(source).MoveByOffset(x, y);
action.MoveToElement(source).Release();
IAction actions = action.Build();
actions.Perform();

立个flag

下一篇:SeleniumNetCoreDemo+travis-ci+Github

Demo下载:https://coding.net/u/yimocoding/p/WeDemo/git/tree/SeleniumDemo

clone命令:git clone https://git.coding.net/yimocoding/WeDemo.git -b SeleniumDemo

dotnet使用Selenium执行自动化任务的更多相关文章

  1. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

  2. Selenium执行测试脚本稳定性的一些经验分享交流

    Selenium执行测试脚本稳定性的一些经验分享交流 公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下. CASE执行游览器:ie firefox ...

  3. Selenium Web 自动化 - 项目持续集成(进阶)

    Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置  2.1 SVN的安装及使用  2.2 新建Jenkins任务3 过程分析 1 背景 ...

  4. Selenium Web 自动化 - 项目持续集成

    Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备  1.1 安装git  1.2 安装jenkins  1.3 安装jenkins插件  1.4 jekins ...

  5. 边缘化搭建 DotNet Core 2.1 自动化构建和部署环境(下)

    写在前面 本篇文章是上一篇边缘化搭建 DotNet Core 2.1 自动化发布和部署(上)的后续操作,本文主要讲解如何开启Docker Remote API,开启Remote API后的权限安全问题 ...

  6. Selenium Web 自动化 - 如何找到元素

    Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...

  7. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作  1.1 用webdriver打开一个浏览器  1.2 最大化浏览器&关闭浏览器 ...

  8. Selenium Web 自动化 - 项目实战环境准备

    Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG  1.1 安装TestNG  1.2 添加TestNG类库2 部署Maven  2.1 mav ...

  9. Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...

随机推荐

  1. box-shadow阴影详解

    每次使用box-shadow,都要查阅资料才能实现对应的效果,现在总结一下,方便以后查看. 使用语法: element{box-shadow: inset x-offset y-offset blur ...

  2. 使用 VS2017 和 js 进行桌面程序开发 - electron 之 Hello Word

    现在基于 js 和 web浏览器核心构建的 C/S 程序越来越多,比如微信桌面版(基于 duilib 和 cef).VS CODE(基于electron)等,出于了解的目的,最近学习了 electro ...

  3. 浅谈viewport

    我们通常在写移动端页面时,往往都会在html页面中加入这样一段话 <meta name="viewport" content="width=device-width ...

  4. docker~写个容器启动的bash脚本

    回到目录 bash脚本在linux里就相当于win里的bat和cmd及ps脚本,可以把一般指令组织在一起,统一去执行,比如我有一些docker容器需要统一去启动,这时,你可以把它们写成一个bash脚本 ...

  5. JDK+Tomcat+Zookeeper+DubboAdmin安装教程

    JDK+Tomcat+Zookeeper+DubboAdmin安装教程 1. 安装内容: JDK 1.8.131 Tomcat 7.0.77 Zookeeper 3.4.9 Dubbo admin 2 ...

  6. 新一代开源Android渠道包生成工具Walle

    本文转自:http://tech.meituan.com/android-apk-v2-signature-scheme.html 新一代开源Android渠道包生成工具Walle 新的应用签名方案A ...

  7. CONSOLE_SCREEN_BUFFER_INFO 结构体

    CONSOLE_SCREEN_BUFFER_INFO结构体 来源:https://msdn.microsoft.com/en-us/library/ms682093(v=vs.85).aspx 作用 ...

  8. Unity Shader入门教程(四)反射光斑的实现

    本节内容介绍PhongModel(也就是上文说的反射光的计算模型),采用的计算方法是BlinPhong(也即是用视线方向V+光源方向L的和,与N做点积,随后幂化得到高光反射系数)下图采用了csdn博文 ...

  9. 使用VMware安装CentOS

    使用VMware安装CentOS 第1步:首先安装VMware Workstation,只需点下一步即可,安装过程略 第2步:文件 → 新建虚拟机 或 直接点击 创建新的虚拟机 图标 第3步:选择 典 ...

  10. 如何查看appache的端口是否被占用

    win + R 快捷键输入 cmd 打开命令行. 输入 netstat -ano 查看端口使用情况 Ctrl + Shift + Esc 打开 windows 任务管理器,依次单击 [查看][ 选择列 ...