13

WatiNテストツールを使用しています。WatiNスクリプトを使用して、キーストローク(つまり、Enterキーを押す)をアプリケーションに渡すことはできますか?

このオプションはWatiRで利用可能でした。このオプションはWatiNで利用できますか?

4

6 に答える 6

11

編集:さらに調べたところ、Enter キーを送信する標準的な方法は、WatiR のように WatiN では機能しないことがわかりました。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}");      
}
于 2009-05-13T13:29:52.617 に答える
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 に答える
5

これについては、 Degree Dev Blogに非常に優れたブログ記事があります。

次のような拡張メソッドとして Enter プレスを追加する方法について説明します。

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 に答える
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);");

少し不格好ですが、これは関係なくEnterキーを押すことを引き起こします。

于 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 に答える