我想使用Watin进行“两步”搜索。例如,我想搜索具有类“abc”的ul-tag。然后我想在该元素中搜索某个li-tag。代码可能如下所示:
ie.ElementWithTag("ul", Find.ByClass("abc")).ElementsWithTag("li", Find.ByXYZ());
但是Element没有ElementWithTag方法。有什么提示如何用Watin做到这一点?
答案 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中实施。