Как мне проверить в WatiN, что <ul>содержит определенные ссылки - PullRequest
1 голос
/ 05 июля 2011

Допустим, у нас есть следующий список в HTML-документе:

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

Как мне проверить с помощью WatiN, что "меню" содержит именно эти гиперссылки, в сжатой форме?

Ответы [ 2 ]

0 голосов
/ 08 июля 2011

Я закончил с этим решением, это было лучшее, что я мог придумать:

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));
}

По сути, я проверяю, что есть два элемента списка, и что они содержат ссылку "Главная", указывающую на "/", и ссылку "Страница", указывающую на "/Page".

0 голосов
/ 05 июля 2011

Вы можете найти UL с идентификатором меню, а затем проверить его потомков, чтобы увидеть, есть ли ссылки, которые вы ожидаете.Это было бы что-то вроде этого (извините, если у меня нет правильных имен методов).

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