WatiN KeyPress和keyDown事件在SelectList上没有做任何事情

时间:2011-05-10 00:57:32

标签: watin keypress selectlist

我正在开始使用watiN进行编码测试,而且当SelectList处于焦点时,我无法模拟用户按下某个键。这是为了测试由SelectList上的OnKeyUp事件触发的客户端JavaScript函数是否正确运行。

如何模拟用户将焦点放在SelectList上并按下键盘上的“o”键?

我正在使用最新的WatiN版本,并且正在VS2008中进行C#单元测试。我编码了

ie = new IE(myTestPageURL);
SelectList mySelect = ie.SelectLists[0];
mySelect.Focus();
mySelect.KeyPress('o');
Assert.IsTrue(mySelect.SelectedItem != null);

我的选择列表中有一个名为“One”的选项,因此按“o”键会导致它成为所选项目。但是,除了SelectList失去焦点,并且我的测试失败之外,在进行keyPress调用时没有发生任何事情。

4 个答案:

答案 0 :(得分:0)

我猜你有,但你有没看过

SelectList.SelectByValue

它似乎会使您的测试更具可重复性,因为您可以向列表中添加任何内容并使其仍然有效。此外,如果您的选择列表项无法填充(无论出于何种原因),您的测试仍应中断。按值选择会增加测试的特异性,而不是让他们选择以“o”开头的第一个项目。

Fwiw是我们目前在工作场所使用的产品。

答案 1 :(得分:0)

我使用SelectList.Select()选择我的下拉项目。

但是既然你想测试javascript事件,你可能想尝试用Element.FireEvent()显式调用javascript事件。

此外,TextField对象有TypeText()方法模拟用户输入并触发所有相关事件,但我没有看到TypeText SelectList 。也许你可以找到两者的解决方案。

答案 2 :(得分:0)

谢谢你,Gram。使用Element.FireEvent对我有用。对于任何有兴趣的人来说,代码最终都是这样的。

[TestMethod]
public void KeyboardSelection_OptionMatches()
{
    ie = new IE("http://localhost:7561/WebSite2/Default.aspx");
    SelectList mySelect = ie.SelectLists[0];
    mySelect.Focus();
    NameValueCollection nvc = new NameValueCollection();
    nvc.Add("charCode", ACharCode); //Constant for test - equals '65'
    nvc.Add("keyCode", ACharCode);
    // this should select the "A" option
    mySelect.FireEvent("onkeydown", nvc);
    // this should move the selected option to "aardvark"
    mySelect.FireEvent("onkeydown", nvc);
    string selectedValue = mySelect.SelectedItem.ToLower();
    ie.Close();
    Assert.AreEqual(selectedValue, "aardvark");
}

}

答案 3 :(得分:0)

我遇到了与日历控件类似的问题,并通过在控件上调用.Blur()方法/事件来解决它。