Ватин: Поиск в детях стихии - PullRequest
4 голосов
/ 12 ноября 2009

Я хочу сделать "двухэтапный" поиск с помощью Watin. Например, я хотел бы найти ul-тег, имеющий класс "abc". Затем я хотел бы найти определенный li-тег внутри этого элемента. Код может выглядеть так:

ie.ElementWithTag("ul", Find.ByClass("abc")).ElementsWithTag("li", Find.ByXYZ());

Но у элемента нет метода ElementWithTag. Любой намек, как это сделать с Ватином?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2009

Авторы Watin сказали мне, что это будет поддерживаться в следующей версии. На данный момент это можно сделать с помощью фильтра и лямбды.

1 голос
/ 13 ноября 2009

UPDATE

На самом деле я только что увидел информацию, что есть ie.ElementWithTag сейчас, посмотрите на этот вопрос.
Так что, возможно, остальная часть этого поста не будет такой полезной


У вас нет готового решения, но, возможно, отправная точка.
Некоторое время назад я писал сценарий автоматизации для одной страницы. Я использовал powershell, но его легко перенести на C # (который, я полагаю, вы используете).

Итак, в этой части скрипта я ищу элемент страницы с тегом input и именем Save Changes .

    #getting property from com object::IHTMLDOMAttribute
    function getProperty ([System.__ComObject] $obj, [string] $prop)
    {
        [System.__ComObject].InvokeMember($prop, [System.Reflection.BindingFlags]::GetProperty, $null, $obj, $null)
    }



    $ie = new-object -com "InternetExplorer.Application";


    $ie.visible = $true;
    $ie.navigate("http://mytestpage.com");
    $doc = $ie.Document;

 $saveButton = $null;
 $inputElts = $null;
 $inputElts = $doc.getElementsByTagName('input')
 foreach ($elt in $inputElts)
 {
     $a = $elt.getAttributeNode('value')
  if ($a -and (getProperty $a 'nodeValue') -eq 'Save changes')
     {
         $saveButton = $elt;
   break;
     }
 }  

Так что, если вы замените деталь в цикле, которая ищет свойство Save Changes элемента (и удалите объявление getProperty), проверкой правильности класса, чем это нужно сделать.

0 голосов
/ 28 марта 2011

Реализовано в новой версии 2.0.50.11579.

Watin 2.0.50.11579

...