13

我正在使用 WatiN 测试工具。我可以使用 WatiN 脚本向应用程序传递击键(即按下回车键)吗?

此选项在 WatiR 中可用。这个选项在 WatiN 中可用吗?

4

6 回答 6

11

编辑:经过进一步检查,我发现发送 ENTER 键的标准方式在 WatiN 中不像在 WatiR 中那样工作。您需要使用System.Windows.Forms.SendKeys

另外,我建议您下载WatiN 测试记录器

这是示例代码。

using(IE ie = new IE("http://someurl"))
{
  TextField myTxt = ie.TextField(Find.ById("myTextBox")).TypeText("some value");
  System.Windows.Forms.SendKeys.SendWait("{ENTER}");      
}
于 2009-05-13T13:29:52.617 回答
5

学位开发博客上有一篇非常好的博客文章

它解释了如何将 Enter press 添加为扩展方法,如下所示:

public static class MyWatiNExtensions
{
    [DllImport("user32.dll")]
    private static extern IntPtr SetFocus(IntPtr hWnd);

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetForegroundWindow(IntPtr hWnd);

    public static void TypeTextQuickly(this TextField textField, string text)
    {
        textField.SetAttributeValue("value", text);
    }

    public static void PressEnter(this TextField textField)
    {
        SetForegroundWindow(textField.DomContainer.hWnd);
        SetFocus(textField.DomContainer.hWnd);
        textField.Focus();
        System.Windows.Forms.SendKeys.SendWait("{ENTER}");
        Thread.Sleep(1000);
    }
}

这使得在测试中按 Enter 键变得非常容易。

browser.TextField("txtSearchLarge").PressEnter();
于 2012-03-29T10:20:13.360 回答
5
var textUrl = ie.TextField("txtUrl");
textUrl.Focus();
textUrl.TypeText("www.mydomain.com");
Thread.Sleep(3000);
textUrl.KeyDown((char)Keys.Down);
textUrl.KeyDown((char)Keys.Down);
textUrl.KeyDown((char)Keys.Enter);

你必须使用System.Windows.Forms.

于 2012-12-05T13:06:46.860 回答
3

为什么不只做以下事情?

using(IE ie = new IE("http://someurl"))
{
  TextField myTxt = ie.TextField(Find.ById("myTextBox")).TypeText("some value");
  TextField.KeyPress('\r');   \\ \r is a carriage return   
}

为我正在使用 Watin 开发的测试工作

于 2011-11-16T20:29:37.457 回答
2

只要浏览器有焦点,上面的答案就可以正常工作,如果没有,则 SendKeys.SendWait 会触发任何有焦点的应用程序。

ie.Eval("var e = $.Event('keydown');e.which = $.ui.keyCode.ENTER;$('#myTextBox').trigger(e);");

虽然有点笨拙,但无论如何这都会触发输入。

于 2012-03-14T15:50:51.540 回答
0

试试这个:

//  This method is designed to simulate an end-user pressing the ENTER key.
private void CheckKeys(object sender, KeyPressEventArgs e)
{
    //  Set the key to be pressed; in this case, the ENTER key.
    if (e.KeyChar == (char)13)
    {
        //  ENTER key pressed.
        e.Handled = true;
    }
}

然后,当您需要模拟按下的 ENTER 键时,只需调用此方法即可。

于 2011-08-18T20:48:51.227 回答