c# Selenium RC -如何测试jQuery按钮点击

本文关键字:测试 jQuery 按钮 RC Selenium 何测试 | 更新日期: 2023-09-27 17:48:59

在selenium测试中运行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");
    });
})

硒:

[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,因为按钮单击从未发生)

c# Selenium RC -如何测试jQuery按钮点击

(注意:我在java中使用selenium,因此可能会有差异,但我强烈怀疑它)

我有时也有类似的问题,但我们在某些地方使用纯javascript,在其他地方使用gwt,在其他地方使用mootools(不要问为什么这么多)用于我们不同的ajax调用,所以我们的问题可能是完全不相关的。但是,也许无论如何我都能帮上忙。

我有时不得不使用mouseOver然后click。有时我甚至必须先做mouseDown,然后再做mouseUp。或者两者的结合。甚至在某些情况下,我们必须重试点击。

(此外,除非单击链接/按钮导致整个页面加载,否则WaitForPageToLoad将导致问题,因为它等待页面加载事件。)下面是我是如何等待Ajax调用完成的,但是如果您只使用JQuery,您应该能够提出一个更简洁的解决方案)

一些JavaScript库将鼠标向上事件响应为指示"click"。如果是这样,MouseDown()和MouseUp()应该会完成这项工作。