如何在WatiN中验证<ul>包含某些链接</ul>

时间:2011-07-05 14:49:09

标签: watin

假设我们在HTML文档中有以下列表:

<ul id="menu">
  <li><a href="/">Home</a></li>
  <li><a href="/Page">Page</a></li>
</ul>

如何以简洁的方式验证WatiN“菜单”是否包含这些超链接?

2 个答案:

答案 0 :(得分:0)

您可以查找带有菜单ID的UL,然后检查其后代,看看是否有链接指向您所期望的链接。这将是这些方面的事情(如果我没有正确的方法名称,请原谅我。)

var menuDiv = Browser.Current.Div(Find.ById("menu"));
Assert.That(menuDiv.Find.By("href", "/Page").Exists);

答案 1 :(得分:0)

我最终得到了这个解决方案,这是我能想到的最好的解决方案:

private static void CheckMenu(string title)
{
    Browser browser = WebBrowser.Current;

    // Verify menu
    WatiN.Core.List menu = browser.List("menu");
    var links = menu.OwnListItems.Select(item => item.Links[0]).ToList();
    Assert.That(links.Count, Is.EqualTo(2));
    CheckLink(links[0], "/", "Home");
    CheckLink(links[1], "/Page", "Page");
}

private static void CheckLink(Link link, string path, string text)
{
    // The href value is translated to an absolute URL, gah :/
    Assert.That(link.GetAttributeValue("href"), Is.StringMatching(
                string.Format("[^:]+://[^/]+{0}", path)));
    Assert.That(link.Text, Is.EqualTo(text));
}

基本上,我确认有两个列表项,并且它们包含指向“/”的链接“Home”和指向“/ Page”的链接“Page”。