一、Selenium简介 
1.Selenium1(Selenium RC)   Selenium2(Selenium WebDriver)  Selenium2.0 = Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目) 
2.WebDriver支持 Firefox (FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver) 和Chrome (ChromeDriver)

二、日常使用方法总结 
1.生成一个web对象 
IWebDriver driver; 
driver = new FirefoxDriver();

2.跳转到指定页面 
driver.Navigate().GoToUrl(baseURL + "/"); 
driver.title 取得当前页的title 
driver.url 取得当前页的url

3.执行js脚本 
((IJavaScriptExecutor) driver).ExecuteScript("js")

4.定位元素 
    driver.FindElement(By.Id("cp1_btnModify"))

By.ClassName(className))     
        By.CssSelector(selector)        
        By.Id(id)                      
        By.LinkText(linkText)           
        By.Name(name)              
        By.PartialLinkText(linkText) 
        By.TagName(name)        
        By.Xpath(xpathExpression)

5.定位frame中元素 
    (1)进入frame 
    driver.SwitchTo().Frame("frame");

(2)定位元素 
    driver.FindElement(By.Id("div1")); 
        driver.FindElement(By.Id("input1"));

(3)退出frame 
    driver.SwitchTo().DefaultContent();

6.如何得到弹出窗口 
    (1)当前窗口的句柄 
    driver.CurrentWindowHandle

(2)所有窗口的句柄 
    driver.WindowHandles

(3)根据句柄得到窗口 
    if driver.CurrentWindowHandle=driver.WindowHandles[i] 
    IWebDriver window=driver.SwitchTo().Window(driver.WindowHandles[i])

(4)根据窗口得到title,url 
    window.Title 
        window.Url

7.如何处理alert、confirm、prompt对话框 
    (1)取得alert框信息 
    Html代码: 
    <input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>  
    driver.FindElement(By.Id("alert")).Click(); 
        IAlert alert = driver.SwitchTo().Alert(); 
        Console.WriteLine(alert.Text); 
    confirm.Dismiss(); //点弹框关闭

(2)取得输出对话框上面的文字 
    Html代码: 
    <input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>

driver.FindElement(By.Id("confirm")).Click(); 
        IAlert confirm = driver.SwitchTo().Alert(); 
        Console.WriteLine(confirm.Text); 
        confirm.Accept(); //点击确定

(3)点击按钮,输入名字,然后点击确认 
    Html代码: 
    <input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:','请输入  
    你的名字'); document.write(name) "/>

driver.FindElement(By.Id("prompt")).Click(); 
        IAlert prompt = driver.SwitchTo().Alert(); 
        Console.WriteLine(prompt.Text); 
        prompt.SendKeys("Hello"); 
        prompt.Accept(); //点击确定

8.如何来处理select下拉框 
    SelectElement selectCity=new SelectElement(driver.FindElement(By.Id("City")));

(1)通过下拉框的索引选中第二项 
        selectCity.SelectByIndex(2); 
    (2)通过下拉列表中的选项的value属性选中 
    selectCity.SelectByValue("10");

(3)通过下拉列表中的选项的Text属性选中 
    selectCity.SelectByText("北京");

(4)遍历一下下拉列表所有选项,用click进行选中选项 
    foreach(IWebElement e in selectCity.Options) 
        { 
           e.Click(); 
        }

9.如何操作cookie 
    (1)增加一个name = "name",value="value"的cookie 
    Cookie cookie=new Cookie("name","value"); 
        driver.Manage().Cookies.AddCookie(cookie);

(2)得到页面下所有的cookies,输入它的所在域、name、value、有效日期、路径 
    ICookieJar cookies=driver.Manage().Cookies; 
        Cookie co = cookies.GetCookieNamed("name"); 
        Console.WriteLine(co.Domain); 
        Console.WriteLine(co.Name); 
        Console.WriteLine(co.Value); 
        Console.WriteLine(co.Expiry); 
        Console.WriteLine(co.Path); 
    (3)删除cookie三种方法 
    a)通过cookie的name 
    driver.Manage().Cookies.DeleteCookieNamed("CookieName");

b)通过cookie对象 
    driver.Manage().Cookies.DeleteCookie(cookie);

c)全部删除 
    driver.Manage().Cookies.DeleteAllCookies(); 
10.如何等待页面元素加载完成 
    (1)明确等待 
    (2)隐形等待

11.如何利用Selenium-webdriver截图 
    Thread.Sleep(5000); 
        Screenshot screenShotFile = ((ITakesScreenshot)driver).GetScreenshot(); 
        screenShotFile.SaveAsFile("test",ImageFormat.Jpeg);

12.如何取得table中的内容 
    (1)通过行得到列的方法 
    private IWebElement GetCell(IWebElement row,int cell) 
        { 
            IList<IWebElement> cells; 
            IWebElement target = null; 
            //列里面有"<th>"、"<td>"两种标签,所以分开处理 
            if(row.FindElements(By.TagName("th")).Count>0) 
            { 
                cells = row.FindElements(By.TagName("th")); 
                target = cells[cell]; 
            }

if(row.FindElements(By.TagName("td")).Count>0) 
            { 
                cells = row.FindElements(By.TagName("td")); 
                target = cells[cell]; 
            } 
            return target; 
        }

(2)通过By得到行的方法 
    public String GetCellText(By by,String tableCellAddress) 
        { 
            //得到table元素 
            IWebElement table = driver.FindElement(by); 
            //对所要查找的单元格位置字符进行分解,得到对应的行、列 
            int index = tableCellAddress.Trim().IndexOf('.'); 
            int row = Convert.ToInt32(tableCellAddress.Substring(0, index)); 
            int cell = Convert.ToInt32(tableCellAddress.Substring(index + 1)); 
            //得到table表中所有行对象,并得到所要查询的行对象 
            IList<IWebElement> rows = table.FindElements(By.TagName("tr")); 
            IWebElement theRow = rows[row]; 
            return GetCell(theRow, cell).Text; 
        }

(3)通过参数得到对应行列的内容 
    Console.WriteLine(GetCellText(By.Id("mytable"),"0.2")); //得到id="mytable"中的第一行第三列的表格内容

(转).net下Selenium2使用方法总结的更多相关文章

  1. svn服务器地址变换以后,mac下的处理方法

    svn服务器地址变换之后,mac下的处理方法 svn服务器地址变换之后,mac下的处理方法 1.进入终端,进入项目所在的文件夹下: cd 项目位置/ 2.查看svn信息 svn info 3.输出结果 ...

  2. 重写类的Equals以及重写Linq下的Distinct方法

    当自定义一个类的时候,如果需要用到对比的功能,可以自己重写Equals方法,最整洁的方法是重写GetHashCode()方法. 但是,这个方法只适用于对象自身的对比(如if(a==b))以及字典下的C ...

  3. opencv直线检测在c#、Android和ios下的实现方法

    opencv直线检测在c#.Android和ios下的实现方法 本文为作者原创,未经允许,不得转载 :原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/ ...

  4. DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.

    getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么 ...

  5. 第一零三天上课 PHP TP框架下控制器的方法分离

    (1)配置信息 修改配置文件->Config.php (配置后,原先的控制方法无效) 'ACTION_BIND_CLASS' => TRUE, // 控制器方法分离 (2)在Control ...

  6. Linux下软件安装方法即路径设置

    Linux下软件安装方法即路径设置 http://www.cnblogs.com/edward259/archive/2010/07/02/1770066.html

  7. 拿到内存中dom元素的最后样式进行修改obj下的currentStyle方法

    在用dom操作在对页面中的<style></style>里的样式进行操作时,发现时无效的,我觉得是因为页面DOM解析时此标签的样式内容才会被读到内存中,因此JS操作时取不到此标 ...

  8. (转载)EhLib 在 Delphi 7 下的安装方法

    EhLib 在 Delphi 7 下的安装方法 1.将 EhLib 解压到一个目录,如:E:\VCL\EhLib: 2.将 EhLib 安装目录下 Common 目录.DataService 目录下的 ...

  9. java中获取项目在tomcat目录下的路径方法

    HttpServletRequest request //获取的是ROOT项目在tomcat下的路径 方法1: String path = request.getSession().getServle ...

随机推荐

  1. 第四题 (List)写一个函数reverseList,该函数能够接受一个List,然后把该List 倒序排列。 例如:  List list = new ArrayList();  list.add(“Hello”);  list.add(“World”);  list.add(“Learn”); //此时list 为Hello World Learn  r

    package zuoye; import java.util.ArrayList; import java.util.List; public class Reverse01 { public st ...

  2. 28.按要求编写一个Java应用程序: (1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。 (2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性, 和计算体积的方法。 (3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、 宽、高,输出其底面积和体积。

    //矩形父类 package d922A; public class Rect { private double l,w; Rect(double c,double k) { l=c; w=k; } ...

  3. iOS UITextView 根据输入text自适应高度

    转载自:http://www.cnblogs.com/tmf-4838/p/5380495.html #import "ViewController.h" @interface V ...

  4. C Runtime Library来历, API, MFC, ATL关系

    首先说明,我google了半天,想找到英文的关于这个资料,但是实在找不到,只好转载国人的讨论. CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行.后来 ...

  5. MFC实现登录对话框连接access数据库方式

    编写一个简单的登录对话框 大家好,我们利用MFC编写一个简单的登录对话框.主窗体是单文档界面.程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来. 1.开打VC++6.0.点 ...

  6. [VC++]用CTime类得到当前日期、时间、星期,格式化(详细讲解)

    用CTime类得到当前日期.时间.星期,格式化(详细讲解)2009/05/12 09:48 A.M.① 定义一个CTime类对象 CTime time; ② 得到当前时间 time = CTime:: ...

  7. apache 不执行PHP,显示代码

    首先检查是否安装PHP,已经安装过的话,先执行 locate libphp5.so 查看APACHE是否有SO文件,如果没有,那就要重装PHP了,先执行php -i | grep configure ...

  8. js 放大镜用法bug解决

    <img id="zoom_02" src='img/zhang5.jpg' data-zoom-image="img/zhang5p.jpg" /> ...

  9. 矩阵快速幂——将运算推广到矩阵上HDU 1575

    /* 本题的思路比较简单,就是将递推公式写出来,然后表达成为一个矩阵的形式 最后通过计算就可以得到一个符合题目要求的矩阵, 然后就是将矩阵上面所有的对角线元素相加 得到的结果即为所求的目标 */ #i ...

  10. 妙用transform

    往前移动 transform.Translate transform.Translate( transform.up* speed*Time.deltaTime , Space.World); 移动t ...