C # Selenium RC - Как проверить нажатие кнопки jQuery? - PullRequest
2 голосов
/ 06 апреля 2011

Как правильно запустить jQuery .click () в тесте на селен?Выбранный элемент является гиперссылкой.

HTML:

<div id="buttons">
    <a class="button" id="btnRun" href="javascript:void(0)">Run</a>
</div>
<div id="output" />

jQuery

$(document).ready(function () {
    $('#btnRun').click(function () {
       $("#output").html("hello world");
    });
})

Selenium:

[Test]
public void TestOutput()
{
    selenium_local = new DefaultSelenium("localhost", 4444, 
                                         "*firefox", "https://localhost");
    selenium_local.Start(); 

    selenium_local.Open("/TestPage");
    selenium_local.WaitForPageToLoad("30000");
    Assert.That(selenium_local.IsElementPresent("id=btnRun"), Is.True);

    selenium_local.Click("id=btnRun");
    Thread.Sleep(5000);

    // also tried without success:
    // selenium_local.FireEvent("id=btnRun","click");
    // selenium_local.Click("xpath=//a[@id='btnRun']");
    // selenium_local.Click("dom=document.getElementById('btnRun')");

    Assert.That(selenium.GetValue("id=output"), Is.EqualTo("hello world"));
}

Когда я запускаюпроверка нажатия кнопки не происходит, и после 2-го WaitForPageToLoad тест завершается и выдает сообщение об ошибке (поскольку текст hello world не был найден, поскольку нажатие кнопки никогда не происходило)

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

(Примечание: я использую селен с Java, поэтому может быть разницей, но я в этом сильно сомневаюсь)

Иногда у меня возникают похожие проблемы, но в некоторых местах мы используем plain-ol'-javascript, в других - gwt, а в некоторых других местах - mootools (не спрашивайте, почему так много) для разных вызовов ajax, поэтому Возможно, наши проблемы совершенно не связаны. Но, может быть, я могу помочь независимо.

Мне иногда приходится использовать mouseOver, а затем click. Иногда мне даже нужно сделать mouseDown, а затем mouseUp. Или комбинация двух. И даже в некоторых случаях мы должны повторить щелчок.

(Кроме того, если нажатие на ссылку / кнопку не приводит к полной загрузке страницы, WaitForPageToLoad будет вызывать проблемы, поскольку ожидает события загрузки страницы. Вот как я закончил в ожидании завершения вызовов Ajax однако вы сможете найти более чистое решение , если вы используете только JQuery)

0 голосов
/ 11 апреля 2011

Некоторые библиотеки JavaScript реагируют на событие «мыши» как указание «щелчок».Если это так, MouseDown () и MouseUp () должны выполнить эту работу.

...