2009-11-12 47 views
4

我想用Watin做一個「兩步走」搜索。例如,我想要搜索具有類「abc」的ul-tag。然後,我想在該元素內搜索某個li標籤。代碼可能如下所示:Watin:在元素的子元素中搜索

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

但是元素沒有ElementWithTag方法。任何提示如何與Watin做到這一點?

回答

2

Watin的作者告訴我,這將在下一個版本中得到支持。目前,這可以使用過濾器和lambda表達式來完成。

1

UPDATE

其實我剛纔看到的信息,有現在ie.ElementWithTag,看this問題。
所以也許這篇文章的其餘部分將不會是有益的


不要對你有現成的解決方案,但也許一個起點。
有些(很久)以前我正在爲一頁寫一些自動化腳本。我使用PowerShell,但它應該很容易遷移到C#(我假設你使用)。

所以在腳本的這部分我搜索有標籤輸入並命名爲保存更改頁面元素。

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

所以,如果你想更換循環,以查找保存更改元素的屬性部分(和刪除的getProperty聲明)與檢查正常類比它應該做的伎倆。