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



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

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

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

您可以查找id为menu的UL,然后检查其decancent,看看是否有您期望的链接。这将是一些类似的东西(如果我的方法名称不太正确,请原谅我(。

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

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

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"。

最新更新