执行结果如图5-68所示。
图5-68 执行结果
5.10 设置管理
在Selenium 2中,可以通过Options对象对测试进行设置,设置内容包括Cookie。超时时间和浏览器窗口。
5.10.1 Cookies/getCookies()
通过Cookies属性(适用于C#)/getCookies()方法(适用于Java)可以获取当前的Cookie集合,可以对其进行读取、添加和删除。
一般在测试的时候很少会修改Cookie,而且大多数Cookie也是加密的,让人无从修改。只有在极少数特例中才会在测试中修改Cookie。
Cookie一般由5个部分组成,即名称、值、所在域、路径和过期时间。
可以编写程序清单5-70或程序清单5-71所示的代码,先进入百度首页,通过Cookies属性(适用于C#)/getCookies()方法(适用于Java)获取当前的Cookie集合。打印Cookie集合的数量,然后将各个Cookie的所有属性打印出来。接着手动添加Cookie,再次打印出Cookie集合的数量,检查是否添加成功将刚才添加的Cookie删除,再次打印出Cookie集合的数量,检查是否成功删除Cookie。
程序清单5-70 C#代码
using System; using OpenQA.Selenium; using OpenQA.Selenium.Firefox; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { IWebDriver mainWindow = new FirefoxDriver(); INavigation navigation = mainWindow.Navigate(); navigation.GoToUrl("http://www.baidu.com"); ICookieJar cookies = mainWindow.Manage().Cookies; //打印已有的cookie数量和内容 Console.WriteLine("当前cookie集合的数量为:" + cookies.AllCookies.Count); Console.WriteLine(""); for (int i = 0; i < cookies.AllCookies.Count; i++) { Console.WriteLine("第" + (i + 1) + "个cookie的各项属性为:"); Console.WriteLine("cookie名称 - "+cookies.AllCookies[0].Name); Console.WriteLine("cookie值 - " + cookies.AllCookies[0].Value); Console.WriteLine("cookie所在域 - " + cookies.AllCookies[0].Domain); Console.WriteLine("cookie路径 - " + cookies.AllCookies[0].Path); Console.WriteLine("cookie过期时间 - " + cookies.AllCookies[0].Expiry); Console.WriteLine(""); } //添加cookie Cookie newCookie=new Cookie("newcookie","新cookie值","baidu.com","",DateTime. Now.AddDays(1)); cookies.AddCookie(newCookie); Console.WriteLine("新增的cookie的各项属性为:"); Console.WriteLine("cookie名称 - " + newCookie.Name); Console.WriteLine("cookie值 - " + newCookie.Value); Console.WriteLine("cookie所在域 - " + newCookie.Domain); Console.WriteLine("cookie路径 - " + newCookie.Path); Console.WriteLine("cookie过期时间 - " + newCookie.Expiry); Console.WriteLine(""); //添加后显示cookie数量 Console.WriteLine("添加cookie后,cookie集合的数量为:" + cookies.AllCookies.Count); Console.WriteLine(""); //删除cookie,先找到名为"newcookie"的cookie,然后删除 cookies.DeleteCookieNamed("newcookie"); //删除后显示cookie数量 Console.WriteLine("删除cookie后,cookie集合的数量为:" + cookies.AllCookies.Count); Console.ReadKey(); } } } |