WatiNテストツールを使用しています。WatiNスクリプトを使用して、キーストローク(つまり、Enterキーを押す)をアプリケーションに渡すことはできますか?
このオプションはWatiRで利用可能でした。このオプションはWatiNで利用できますか?
編集:さらに調べたところ、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}");
}
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。
これについては、 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();
なぜ次のことをしないのですか?
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を使って開発していたテストのために働いた
上記の答えは、ブラウザーにフォーカスがある限り問題なく機能します。そうでない場合は、フォーカスのあるアプリケーションで SendKeys.SendWait がトリガーされます。
ie.Eval("var e = $.Event('keydown');e.which = $.ui.keyCode.ENTER;$('#myTextBox').trigger(e);");
少し不格好ですが、これは関係なくEnterキーを押すことを引き起こします。
これを試して:
// 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 キーが押されたことをシミュレートする必要があるときに、このメソッドを呼び出すだけです。