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,因为按钮单击从未发生)
(注意:我在java中使用selenium,因此可能会有差异,但我强烈怀疑它)
我有时也有类似的问题,但我们在某些地方使用纯javascript,在其他地方使用gwt,在其他地方使用mootools(不要问为什么这么多)用于我们不同的ajax调用,所以我们的问题可能是完全不相关的。但是,也许无论如何我都能帮上忙。
我有时不得不使用mouseOver
然后click
。有时我甚至必须先做mouseDown
,然后再做mouseUp
。或者两者的结合。甚至在某些情况下,我们必须重试点击。
(此外,除非单击链接/按钮导致整个页面加载,否则WaitForPageToLoad将导致问题,因为它等待页面加载事件。)下面是我是如何等待Ajax调用完成的,但是如果您只使用JQuery,您应该能够提出一个更简洁的解决方案)
一些JavaScript库将鼠标向上事件响应为指示"click"。如果是这样,MouseDown()和MouseUp()应该会完成这项工作。