Поиск каскадного элемента с помощью watin - PullRequest
4 голосов
/ 07 июля 2010

Скажите, пожалуйста, как искать каскадный элемент на странице.

Например, на странице используется 10 тегов якорных элементов. Я могу просто получить элемент, используя метод FindBy, т.е. Element.FindBy (). Но что делать, когда у меня есть каскадный элемент на странице css, такой как ".lineItem .title a"

1 Ответ

5 голосов
/ 08 июля 2010

Я не уверен, что вы имеете в виду, говоря "каскадный элемент". Вы ищете элемент <a/>, содержащийся в элементе с class="lineItem", который содержится в элементе с class="title"? Если это так, вы можете найти по крайней мере две вещи, чтобы найти этот элемент:

  1. Использование Find.ByExistenceOfRelatedElement<T>(ElementSelector<T> selector)

    ie.Link(
        Find.ByExistenceOfRelatedElement<Element>(link => link.Ancestor(
            Find.ByClass("title")
            && Find.ByExistenceOfRelatedElement<Element>(linksAncestor => linksAncestor.Ancestor(
                Find.ByClass("lineItem"))))));
    
  2. Использование Predicate<Link>

    ie.Link(link =>
    {
        var ancestor = link.Ancestor(Find.ByClass("title"));
        return ancestor != null && ancestor.Ancestor(Find.ByClass("lineItem")) != null;
    });
    

Могу поспорить, есть другой способ.

...