我是WatiN测试框架的新手。我在使用JavaScript菜单下拉链接测试网站页面时遇到问题。
我不知道如何处理这个任务..... 我必须处理所有链接并进入每个页面并进行进一步的测试。
我希望你误解了我的问题,考虑一下本网站的一个例子 http://www.andrewsellick.com/examples/sliding-side-bar/# 我的测试网站包括各种javascript菜单,所以我的主要想法是执行javascript,我认为watin是最好的方法,除非使用最少使用的rhino库.....
我必须找出链接并使用watin框架,因为我必须测试数十个网站,我必须自动提取这些链接的过程,至少应该能够打开所有这些链接
感谢您的回复。但它没有解决我的问题......
答案 0 :(得分:0)
您是否期望实施导航机制,或者您是否打算实施自动链接检查程序,以验证每个链接是否有效。
我建议您首先实现导航机制作为测试框架的一部分,并让您的测试使用此框架导航各自的页面。
这里张贴了一个很好的例子 http://fmair.blogspot.com/2011/03/watin-on-crack.html
或者您可以只使用一个接受管道分隔字符串的函数并识别ui上的链接并单击它们以进一步导航。
问候,
Ashish Narmen
答案 1 :(得分:0)
具体答案:
对于给定的示例链接,这里的代码将展开滑动菜单并闪存/输出每个链接的文本。
在goto之后有睡眠,因为它需要加载菜单。我刚刚从空中挑选了2500毫秒,似乎每次都有效。找到一个更好的项目等待将是一个非常好的主意。
ie.GoTo("http://www.andrewsellick.com/examples/sliding-side-bar/#");
System.Threading.Thread.Sleep(2500);
ie.Link("sideBarTab").Click();
foreach (ListItem currItem in ie.Div("sideBarContents").Lists[0].ListItems)
{
currItem.Links[0].Flash(2);
Console.WriteLine("link text: " + currItem.Links[0].Text);
}
注意:严格来说,您甚至不需要展开幻灯片菜单,因为链接存在且只是隐藏。扩展菜单是一个好主意,因为它是用户会做的。
使用:IE8和WatiN 2.1
通用答案
要获取给定页面上的每个链接,您将迭代链接集合
示例:(从内存中写入,未经测试)
foreach (Link currLink in ie.Links)
{
//do stuff
}
有了这个,你会遇到一些链接火灾弹出窗口的问题。一些链接扩展菜单。有些链接会转到不同的页面。一些链接等等等。此外,你需要迭代每个帧,我相信那些被视为他们自己的区域,上面的foreach不会在框架中看到任何链接。
如果你的应用程序是用良好的命名/ CSS分类/东西编写的,那么你可以根据它的名字/ CSS类知道一个链接将要做什么,所以提出一个相对通用的解决方案是完全可能的。 /东西。