菜鸟学selenium webdriver - 1
来源:互联网 发布:程序员做投资 编辑:程序博客网 时间:2024/06/12 01:08
在测试岗位也混迹了3个多年头了,从最开始接触微软的自动化测试,到手工测试,一直很想好好学习一下自动化测试来着,可惜由于工作限制,总是偶尔私下折腾,一会UIA,一会Test complete,也没折腾出啥效果来,挫败。。。 茶几。。。 就不说了!
现在终于下定决心,开始折腾一下网页自动化测试(对于一个都没做过网页测试滴人,自己也不晓得说啥了,呵呵。。。),查找了一些关于网页自动化测试的工具,最后选定了selenium,这也是开发出生的心态作祟吧
开始看selenium的时候,已经和webdriver合并了,所以之前滴什么RC1.0 2.0之类滴,咱就不考虑了。只知道之前主要是通过java script的注入来控制浏览器,现在主要都是通过调用浏览器自身接口,更加方便合理。
下载了webdriver后,开始啃文档了,当然要从官方网站开始,比如说http://seleniumhq.org/docs/03_webdriver.html。理所当然,文档上滴示例肯定是俺滴第一个程序啦!
//WebDriver.dll
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
//WebDriver.Support.dll
using OpenQA.Selenium.Support;
using OpenQA.Selenium.Support.UI;
namespace SeleniumDemo1
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl(@"http://www.google.com.hk");
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
query.Submit();
WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(10));
wait.Until((d) => { return d.Title.ToLower().StartsWith("cheese"); });
System.Console.WriteLine("Page title is: " + driver.Title);
driver.Quit();
}
}
}
由于本人有个习惯,就是喜欢手打code,不喜欢直接copy,这就导致了一开始运行程序时,firefox启动后怎么也不打开google,尝试直接赋值给driver.Url,但是调试时发现url一直木有赋值成功,调试中的exception现实参数格式不正确,这才发现原来我输入的网址是www.google.com.hk,前面没有添加http://,运行时程序并不会报错,也不会抛出异常,真是个杯具!
就咱这剩下的还木有还给老师的丁点csharp知识,遇到 wait.Until((d) => { return d.Title.ToLower().StartsWith("cheese"); }); 又要开始哭了!查看webdriverwait.until的定义,发现其参数 system.func乃是委托一枚,但=>这又是何方妖孽,我勒个去,out到家了都!
行,咱又开始啃文档吧,=>这个是lambda表达式,一般读作goes to,左边是参数,右边可看做函数体。until的参数定义为func<in T, out TResult> condition,在此,可以看出其调用的函数体就是=>右边的函数体,参数就是左边的d,(d)是隐式类型IWebDriver。由此,我们可以直接声明委托,定义并调用一个参数为IWebDriver并拥有相同函数体的函数,相信同样可以实现。
//WebDriver.dll
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
//WebDriver.Support.dll
using OpenQA.Selenium.Support;
using OpenQA.Selenium.Support.UI;
namespace SeleniumDemo1
{
class Program
{
static void Main(string[] args)
{
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl(@"http://www.google.com.hk");
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
query.Submit();
WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(10));
System.Func<IWebDriver, bool> t = test;
wait.Until(t);
System.Console.WriteLine("Page title is: " + driver.Title);
driver.Quit();
}
public static bool test(IWebDriver d)
{
return d.Title.ToLower().StartsWith("cheese");
}
}
}
我们定义了一个委托t,并让它调用test函数,但是菜鸟又发现为何我没有传任何参数给它,它也能自动找到我的firefoxdriver呢,抬眼一看,发现我们定义wait时,就已经指定好了,用于等待的instance就是我们要用的driver啦!
Note:StartsWith有些奇怪,如果是Cheese它反而找不到,cheese却可以顺利通过 先睡觉了,留待下次解决吧!
继续努力......
- 菜鸟学selenium webdriver - 1
- 菜鸟学selenium webdriver - 2
- 和我一起学 Selenium WebDriver
- 和我一起学 Selenium WebDriver(1)——入门篇
- 和我一起学 Selenium WebDriver(1)——入门篇
- 和我一起学 Selenium WebDriver(1)——入门篇
- 和我一起学 Selenium WebDriver(1)——入门篇
- Selenium WebDriver
- selenium webdriver
- Selenium WebDriver
- Selenium WebDriver
- selenium webdriver
- Selenium WebDriver
- Selenium Webdriver
- 【Selenium】PART2 selenium WebDriver
- 【Selenium】PART3 selenium WebDriver
- [Selenium] selenium webdriver 选择器
- Selenium Webdriver入门1----安装Maven过程
- 关于SSL数字证书的整理
- 回复喜欢C和汇编的大学生
- web字体格式及几种在线格式转换工具介绍
- 开始接触MongoDB之MongoDB的基本数据类型
- CE6 实现 USB 转 串口
- 菜鸟学selenium webdriver - 1
- postgreSQL jdbc
- SQLServer 2005中创建Web Services
- Linux共享库路径配置
- 网页源代码\r\n问题
- WebXone V2.3.0.2发布! DELPHI编写网络应用程序的利器!
- 编程之美----数字回文
- 套接字学习3
- 报错:object is not an instance of declaring class