1. 打开VS2012

2. 新建工程(单元测试工程或控制台程序都可以, 看需求)

3. 工具->NuGet程序包管理器->程序包管理器控制台

4. 输入"Install-Package Selenium.WebDriver"安装程序包

5. 输入"Install-Package Selenium.WebDriverBackedSelenium"安装程序包

6. 输入"Install-Package Selenium.Support"安装程序包

一些方法的意义(主观感觉, 文档有限(并且国内访问不了), 一天左右的时间的接触):

//火狐控制器, 还有别的浏览器, 需要安装对应的Driver, 如ChromeDriver
IWebDriver driver = new FirefoxDriver(); //加载页面
driver.Navigate().GoToUrl(baseURL + "/"); //最大化窗口
driver.Manage().Window.Maximize(); //线程等待
System.Threading.Thread.Sleep(); //点击元素
driver.FindElement(By.Id("Login")).Click(); //填写表单
driver.FindElement(By.Id("poploginId")).SendKeys("xachary"); //获取鼠标动作
Actions actions = new Actions(driver); //把鼠标移动到元素
actions.MoveToElement(element); //移动坐标(根据上一次的相对位置)
actions.MoveByOffset(, ); //执行鼠标动作(包含多个动作)
actions.Perform(); //等待元素出现(关键是等待的元素是从不可见到可见, 不然无效, 则用Thread.Sleep吧)
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan( * )); //用CSS选择查找元素
driver.FindElement(By.CssSelector("li.first > a > img")).Click();

例子片段:

using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Interactions.Internal;
using System.Drawing; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium.Chrome; namespace BosSeleniumDriver
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver;
string baseURL;
driver = new FirefoxDriver();
//driver = new ChromeDriver();
//baseURL = "http://localhost:49912";
baseURL = "http://172.16.8.7:4399";
try
{
//首页
driver.Navigate().GoToUrl(baseURL + "/"); //最大化窗口
driver.Manage().Window.Maximize(); //线程等待1秒
System.Threading.Thread.Sleep(); //登陆
driver.FindElement(By.Id("Login")).Click();
driver.FindElement(By.Id("poploginId")).SendKeys("xachary");
driver.FindElement(By.Id("password")).SendKeys("home890619");
driver.FindElement(By.Id("loginbtn")).Click(); //线程等待1秒
System.Threading.Thread.Sleep(); Actions actions = new Actions(driver);
//移动鼠标让导航出现
IWebElement nav = driver.FindElements(By.CssSelector(".has_sub"))[];
actions.MoveToElement(nav);
actions.MoveByOffset(, );
actions.Perform(); //等待导航出现, 100毫秒
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan( * )); //点击家庭药箱链接
actions.Click();
actions.Perform(); //选择第一个商品
driver.FindElement(By.CssSelector("li.first > a > img")).Click(); //跳转到新页面
driver.SwitchTo().Window(driver.WindowHandles.Last()); //购买
driver.FindElement(By.LinkText("立即购买")).Click(); //等待获取收货地址
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(, , )); //如果没有地址
if (driver.FindElements(By.CssSelector(".address-radio.fl")).Count == )
{
//级联下拉框
new SelectElement(driver.FindElement(By.Id("sltProvince"))).SelectByText("广东省"); driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(, , )); new SelectElement(driver.FindElement(By.Id("sltCity"))).SelectByText("珠海市"); driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(, , )); new SelectElement(driver.FindElement(By.Id("sltArea"))).SelectByText("香洲区"); //填写表单
driver.FindElement(By.Id("txtAddress")).Clear();
driver.FindElement(By.Id("txtAddress")).SendKeys("测试地址");
driver.FindElement(By.Id("txtReceive")).Clear();
driver.FindElement(By.Id("txtReceive")).SendKeys("测试收货人");
driver.FindElement(By.Id("txtTelephone")).Clear();
driver.FindElement(By.Id("txtTelephone")).SendKeys("");
//提交表单
driver.FindElement(By.Id("btnUpdateAddr")).Click();
}
driver.FindElement(By.Name("rdoAddr")).Click(); //等待商品信息出现
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(, , ));
wait.Until<IWebElement>((o) =>
{
return driver.FindElement(By.CssSelector(".cart_list_td tr"));
}); //等待提交订单按钮生效
System.Threading.Thread.Sleep();
//提交订单
driver.FindElement(By.LinkText("提交订单")).Click(); //选择工行支付
WebDriverWait wait2 = new WebDriverWait(driver, new TimeSpan(, , ));
wait2.Until<IWebElement>((o) =>
{
return driver.FindElement(By.Id("gh"));
}).Click();
//支付
driver.FindElement(By.Id("btn_pay")).Click();
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(, , ));
//关掉支付弹出页
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.Close();
//回到支付页面
driver.SwitchTo().Window(driver.WindowHandles.Last());
driver.FindElement(By.LinkText("付款遇到问题")).Click();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
Console.WriteLine("结束");
System.Threading.Thread.Sleep();
//Console.ReadLine();
driver.Quit();
}
}
}
}

Selenium WebDriver 学习笔记的更多相关文章

  1. selenium webdriver 学习笔记(三)

    selenium webdriver 一.上传文件操作 上传文件夹一般要打开一个本地窗口,从窗口选择本地文件添加.所以一般会卡在如何操作本地窗口添加上传文件. 其实,在selenium webdriv ...

  2. selenium webdriver 学习笔记(二)

    selenium webdriver 一.定位一组元素: webdriver可以很方便的使用findElement 方法来定位某个物定的对象.不过有时候我们却要定位一组对象,这时候就需要使用findE ...

  3. selenium webdriver 学习笔记(一)

    selenium webdriver 第一个脚本: #coding = utf-8 from selenium import webdriver import time url = "htt ...

  4. Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )

    !/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...

  5. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  6. Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...

  7. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  8. Python3+Selenium3+webdriver学习笔记10(元素属性、页面源码)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记10(元素属性.页面源码)'''from selenium i ...

  9. Python3+Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记9(发送富文本信息及上传文件处理)'''from seleni ...

随机推荐

  1. ASP.NET MVC请求处理过程

  2. cxf的使用及安全校验-02创建简单的客户端接口

    上一篇文章中,我们已经讲了如果简单的创建一个webservice接口 http://www.cnblogs.com/snowstar123/p/3395568.html 现在我们创建一个简单客户端接口 ...

  3. Unable to open log device '/dev/log/main': No such file or directory

    在我们使用真机进行Android应用调试时,无法获得调试信息,错误提示如下:Unable to open log device '/dev/log/main': No such file or dir ...

  4. JS常用验证方法

    1.验证必须为数字(可有小数点) if(isNaN(value))execCommand('undo') 说明:1.isNaN()方法用于验证value值是否为非法数字,返回值true或者false. ...

  5. linux 文件类命令笔记

    看一下linux的教程,不错,由于只看鸟哥有点空洞,于就是找了个视频教程,边看边学 对比了几个教程,http://edu.51cto.com/course/course_id-32.html这个教程相 ...

  6. Linux远程拷贝scp命令

    今天要从admin服务器将测试上修正content和image_count后的数据库更新到dz服务器. 首先需要备份数据库,使用mysqldump命令 整表全部备份:    mysqldump -u ...

  7. linux crond服务

    linux crond服务 linux crond服务简介:定时执行系统命令 查看crond服务状态:[root@www ~]# /sbin/service crond status 启动.停止.重启 ...

  8. Send竞争对手:百度云一小时,QQ超大附件最多支持2G,邮件附件20M到50M不等(附国外所有storage列表)——痛点是,最大传输2G,最大容量只有3G(和微云不是一回事),转存到微云文件不能超过1G

    QQ邮箱最大可发送50M普通附件(群邮件则限制在2M).此外也可以使用超大附件功能,支持将1G的文件发往任意邮箱.QQ邮箱根据你的QQ邮箱容量的不同制定相应的接受附件限制,包括附件在内,2G用户所发送 ...

  9. Java面试题之十

    五十六.java中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 主要有字节流,字符流.字节流继承于InputStream .OutputStream,字符流 ...

  10. poj 3321

    题目链接 题意:一开始1-n都有苹果,Q查询以x为根下存在多少. 树状数组+DFS+队列转换 这题纠结了2天,一开始一点思路都没有,看大神都是吧树状数组转换成队列来做 看了好久都不知道怎么转换的, 解 ...