使用WatiN脚本将键击(即Enter键)传递到应用程序中

13 c# watin

我正在使用WatiN测试工具.我可以使用WatiN脚本将键击(即按Enter键)传递给应用程序吗?

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

Jos*_*lio 11

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

另外,我建议您下载WatiN Test Recorder.

这是示例代码.

using(IE ie = new IE("http://someurl"))
{
  TextField myTxt = ie.TextField(Find.ById("myTextBox")).TypeText("some value");
  System.Windows.Forms.SendKeys.SendWait("{ENTER}");      
}
Run Code Online (Sandbox Code Playgroud)


Sti*_*ian 5

Degree Dev Blog上有一篇非常好的博客文章

它解释了如何添加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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

browser.TextField("txtSearchLarge").PressEnter();
Run Code Online (Sandbox Code Playgroud)


yon*_*365 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);
Run Code Online (Sandbox Code Playgroud)

你必须使用System.Windows.Forms.