Watin:在一个元素的孩子中搜索

时间:2009-11-12 19:52:13

标签: c# testing automated-tests watin

我想使用Watin进行“两步”搜索。例如,我想搜索具有类“abc”的ul-tag。然后我想在该元素中搜索某个li-tag。代码可能如下所示:

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

但是Element没有ElementWithTag方法。有什么提示如何用Watin做到这一点?

3 个答案:

答案 0 :(得分:2)

Watin的作者告诉我,这将在下一版本中得到支持。目前,这可以使用filter和lambdas来完成。

答案 1 :(得分:1)


<强>更新

实际上我刚刚看到有关ie.ElementWithTag的信息,请查看this问题。
所以这篇文章的其余部分可能不会那么有用


没有现成的解决方案,但也许是一个起点 有些(很久)以前我正在为一个页面编写一些自动化脚本。我使用了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;
     }
 }  

因此,如果你要替换part中的part Changes属性(并删除getProperty声明)的part in循环,并检查是否应该使用正确的类。

答案 2 :(得分:0)

在新版本2.0.50.11579中实施。

Watin 2.0.50.11579