(转).net下Selenium2使用方法总结

一、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使用方法总结,布布扣,bubuko.com

时间: 2024-10-21 04:28:44

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

CentOS下软件安装方法总结

一.rpm包安装方式步骤:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.rpm所在的目录:4.输入rpm -ivh soft.version.rpm二.deb包安装方式步骤:1.找到相应的软件包,比如soft.version.deb,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.deb所在的目录:4.输入dpkg -i soft.ve

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

在用dom操作在对页面中的<style></style>里的样式进行操作时,发现时无效的,我觉得是因为页面DOM解析时此标签的样式内容才会被读到内存中,因此JS操作时取不到此标签的内容 一个标签的样式有可能是多个样式文件所定义而成了,所以浏览器在解释标签的时候会有一个计算标签最后样式的过程,想要对<style>中定义格式的标签的样式进行修改必须去操作最后浏览器计算机计算出的样式,这里用obj下的currentStyle方法,具体测试如下: <html> &l

Yii在window下的安装方法

首先,在http://www.yiichina.com/上下载yii 然后,配置系统环境变量,在win8下,按win+x,找到系统->高级系统设置->环境变量->path 把php的运行环境,加入到环境变量中,以分号隔开.如,我的是D:\wamp\bin\php\php5.4.12 在运行中输入php命令,会出现闪烁的下划线,说明环境变量配置成功. 最后,切换到yii目录下的framework目录下,执行下面的命令: php  yiic webapp  ../my_pro--------

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

(1)配置信息 修改配置文件->Config.php (配置后,原先的控制方法无效) 'ACTION_BIND_CLASS' => TRUE, // 控制器方法分离 (2)在Controller文件夹下创建   和控制器类名  相同  的文件夹    (该文件夹即代替原来的控制器) (3)在新建的文件夹下书写方法类(该类即代替原来的控制器下的方法) <?php namespace Home\Controller\Index; //命名空间具体到类名(代替类的文件夹) use Think\

iOS开发之单例模式下的初始化方法

iOS开发之单例模式下的初始化方法 一般的单例我们会这么写 +(instancetype)sharedXXXManager{ static XXXManager *sharedXXXManagerInstance = nil; static dispatch_once_t predicate; dispatch_once(&predicate,^{ sharedXXXManagerInstance = [[XXXManager alloc] initPrivate]; }); return sh

Mac OS X下显示隐藏文件方法

对于首次使用 Mac 系统的朋友来说,可能会有点稍微有点不适应,那就是 OS X 里并没有显示和隐藏文件的菜单或者设置.然而,其实在苹果 Mac OS X 操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在 Mac 终端输入命令. 打开终端,输入以下命令: 显示/隐藏Mac隐藏文件命令如下(注意其中的空格): 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true && killall F

Linux系统下安装phpmyadmin方法

phpmyadmin下载地址:不要分,赶紧去下载吧!http://download.csdn.net/detail/u011986449/7429799 1.找到 /libraries/config.default.php文件(config.default.php复制到phpmyadmin目录下,然后更名为config.inc.php),该文件有如下项目(2-8)须自行配置,windows用写字板(不要用记事本,这是UTF8编码)进行编辑,在linux下直接用vim编辑. 2.查找 $cfg['

Centos 6&7下服务启动方法及添加到开机启动

在linux系统中,安装完一个软件或应用后,有时候需要手动启动该应用,也需要收到将该应用添加到开机启动项中,让其可以能够在linux一开机后就加载该应用 启动应用的方法 CentOS 6 : service SERVICE start|stop|restart|reload|status CentOS 7 : systemctl start|stop|restart|reload|status SERVICE 添加到开机启动项的方法 CentOS 6 : chkconfig SERVICE on

网页中添加下划线的方法汇总及优缺点

本文主要介绍了添加下划线样式的几乎所有方法,并且比较了每一种方法的优缺点.没想到之前一直没有注意的下划线还有这么多玄机奥秘! 本文由 nzbin 翻译,艾凌风 校稿.未经许可,禁止转载! 英文出处:css-tricks.com 发表地址:http://web.jobbole.com/89425/ 有很多种添加下划线样式的方法.可能你还记得< Crafting link underlines on Medium >这篇文章.Medium 并没有尝试特殊的方法,只是想创建一个漂亮的看起来正常的下划