.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"中的第一行第三列的表格内容
转载于:https://www.cnblogs.com/360S/archive/2012/10/17/2727323.html
.net下Selenium2使用方法总结相关推荐
- virtualenv 在windows下的绿化方法
virtualenv 在windows下的绿化方法 测试环境: windows 7 32 en Python 2.7.3 setuptools-0.6c11.win32-py2.7 virtualen ...
- centos下两种方法安装git
centos 5 64位下两种方法安装git 这里来给大家介绍下编译安装和yum安装git. 系统:centos 5.5 64位 需要的软件包:git-latest.tar.gz epel-r ...
- win10 mysql 5.7.21_MySql 5.7.21免安装版本win10下的配置方法
1.解压到想要安装的位置,创建my.ini文件 my.ini的内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设 ...
- python root_python在非root权限下的安装方法
以前在使用Python的时候,都是使用root用户安装好的全局python,现在,因为root用户安装的Python版本太低,同时自己没有root权限去对全局Python升级,所以要在非root用户下 ...
- Highcharts Pie 饼图提示标签IE下重叠解决方法,及json数据绑定方法
Highcharts Pie 饼图提示标签IE下重叠解决方法,及json数据绑定方法 参考文章: (1)Highcharts Pie 饼图提示标签IE下重叠解决方法,及json数据绑定方法 (2)ht ...
- Linux操作系统下DHCP服务器配置方法介绍
Linux操作系统下DHCP服务器配置方法介绍 1.安装dhcp软件包 #rpm –ivh dhcp-3.0.1-12_EL.i386.rpm 2.配置文件dhcpd.conf 由于dhcpd.con ...
- 织梦?php?调用栏目,dedecms列表页内容页模板调用上一个栏目下一个栏目方法
织梦CMS内容页有上一篇下一篇文章,没有上一个栏目下一个栏目,我们可以不用修改程序内核文件,直接在模板里用"runphp"输出上一个栏目和下一个栏目. 上一个栏目下一个栏目标签写法 ...
- Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略 目录 双下划线介绍 1.关于双下划线的函数或方法或属性 双下划线介绍 1.关于双下划线的函数或方法或属性 __name_ ...
- linux下gdb调试方法和技巧详解
linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...
最新文章
- 《虚拟化与云计算》读书感(四)数据中心的设计和构造
- 我有点不喜欢分布式中的TCC模式了
- Mac卸载mysql并安装mysql升级到8.0.13版本
- 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
- mf怎么使mysql信息分区_细聊MySQL的分区功能
- 安卓平板运行python_使用Python进行手机平板移动开发 | 学步园
- php mysql 子查询_php – MySQL查询和子查询
- 微信公众平台开发5:翻译功能
- 一篇文章带你吃透 hashmap(面试指南升级版)
- Visual Studio 2005 编译的版本无法启动,出现应用程序配置不正确的错误
- 某科学的分支语句 --- switch
- c语言上机考试设计题及答案,C语言程序设计基础上机考试一题目及参考答案.doc...
- NOIP 2017 PJ
- 泛运筹理论初探——Louvain算法简介
- 2020年阴历二月二十六 投资理财~读万科财报有感
- 计算机专业笔记本电脑华为,大学生不知道买什么电脑?来看这款华为荣耀极致性价比笔记本!...
- 高等数学:对向量及其线性运算和数量积、向量积的见解
- 教育专家妙论生命法则
- 采用瑞昱RTL8852AE的WiFi 6模块RW6852-PCIE
- iOS开发之网络通信(1)—— 计算机网络