如何测试WatiN中的所有JavaScript菜单链接?

时间:2011-09-16 11:52:48

标签: asp.net watin

我是WatiN测试框架的新手。我在使用JavaScript菜单下拉链接测试网站页面时遇到问题。

我不知道如何处理这个任务..... 我必须处理所有链接并进入每个页面并进行进一步的测试。


我希望你误解了我的问题,考虑一下本网站的一个例子 http://www.andrewsellick.com/examples/sliding-side-bar/# 我的测试网站包括各种javascript菜单,所以我的主要想法是执行javascript,我认为watin是最好的方法,除非使用最少使用的rhino库.....

我必须找出链接并使用watin框架,因为我必须测试数十个网站,我必须自动提取这些链接的过程,至少应该能够打开所有这些链接

感谢您的回复。但它没有解决我的问题......

2 个答案:

答案 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类知道一个链接将要做什么,所以提出一个相对通用的解决方案是完全可能的。 /东西。