2009-11-12 4 views
4

Je veux faire une recherche "en deux étapes" en utilisant Watin. Par exemple je voudrais chercher un ul-tag ayant la classe "abc". Ensuite, je voudrais rechercher un certain li-tag à l'intérieur de cet élément. Le code peut ressembler à ceci:Watin: Recherche dans les enfants d'un élément

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

Mais Element n'a pas de méthode ElementWithTag. N'importe quel indice comment faire avec Watin?

Répondre

2

Les auteurs de Watin m'ont dit que cela sera pris en charge dans la prochaine version. Pour l'instant, cela peut être fait en utilisant un filtre et des lambdas.

1

MISE À JOUR

En fait, je viens de voir les informations qu'il ya ie.ElementWithTag maintenant, regardez this question.
Alors peut-être reste de cet article ne sera pas utile que


Ne pas avoir de solution prête pour vous, mais peut-être un point de départ.
Il y a (longtemps), j'écrivais un script d'automatisation pour une page. J'ai utilisé powershell mais il devrait être facile de migrer vers C# (que je suppose que vous utilisez).

Donc, dans cette partie du script que je recherche sur » élément de page qui a une entrée d'étiquette et est nommé Enregistrer les modifications.

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

Donc, si vous remplacer une partie en boucle qui recherche Sauver la propriété Les modifications de l'élément (et supprimer la déclaration getProperty) avec contrôle pour la classe appropriée qu'il devrait faire l'affaire.

Questions connexes