Как выполнить событие нажатия на элемент, присутствующий в теге привязки? - PullRequest
1 голос
/ 10 ноября 2011
<div class="buttonClear_bottomRight">
    <div class="buttonBlueOnWhite">
        <a onclick="$find('{0}').close(true); callPostBackFromAlert();" href="#">Ok</a><div
            class='rightImg'>
        </div>
    </div>
</div>

В приведенном выше коде я хотел нажать кнопку Ok, присутствующую в теге привязки. Но идентификатор не генерируется, из-за чего я не могу напрямую выполнить действие щелчка. Я попытался обойти, как указано ниже.

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 возвращает ноль для начальных экземпляров, из-за которых мы не можем пройти через него. Есть ли другой простой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Попробуйте это ...

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 голос
/ 13 марта 2013

Вы можете просто нажать на ссылку, найдя ее текст

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();
...