如何对锚标记中的元素执行click事件?

时间:2011-11-10 06:16:14

标签: watin

<div class="buttonClear_bottomRight">
    <div class="buttonBlueOnWhite">
        <a onclick="$find('{0}').close(true); callPostBackFromAlert();" href="#">Ok</a><div
            class='rightImg'>
        </div>
    </div>
</div>

在上面的代码中,我想点击锚标签中的Ok按钮。但是没有生成id,因为我无法直接执行点击操作。我尝试了下面提到的工作。

IElementContainer elm_container = (IElementContainer)pw.Element(Find.ByClass(classname));
foreach (Element element in elm_container.Elements)
{
  if (element.TagName.ToString().ToUpper() == "A")
  {
    element.Click();
  }
}

但是这里elm_container为初始实例返回null,因为我们无法遍历它。还有其他简单方法吗?

2 个答案:

答案 0 :(得分:2)

试试这个......

Div div = browser.Div(Find.ByClass("buttonClear_bottomRight")).Div(Find.ByClass("buttonBlueOnWhite"));
Debug.Assert(div.Exists);
Link link = div.Link(lnk => lnk.GetAttributeValue("onclick").ToLower().Contains(".close(true)"));
Debug.Assert(link.Exists);
link.Click();

希望它有所帮助!

答案 1 :(得分:1)

您只需点击链接即可找到其文字

var OkButton = Browser.Link(Find.ByText("Ok"));

    if(!OkButton.Exists)
    {
    \\Log error here
    }
    OkButton.Click();
    Browser.WaitForCompplete();

或者您可以找到包含链接的div,例如

var ContainerDiv = Browser.Div(Find.ByClass("buttonBlueOnWhite"));
if(!ContainerDiv.Exists)
{
 \\Log error here
}

ContainerDiv.Links.First().Click();
Browser.WaitForComplete();