Передайте ключевой штрих (т.е. Enter Key) в приложение с использованием сценариев WatiN
Я использую инструмент тестирования WatiN. Могу ли я передать ключевой штрих (т.е. Нажав клавишу ввода) в приложение, используя сценарии WatiN?
Этот параметр доступен в WatiR. Этот параметр доступен в WatiN?
Ответы
Ответ 1
EDIT:. После дополнительной проверки я обнаружил, что стандартный способ отправки ключа 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}");
}
Ответ 2
Есть действительно хорошая статья в блоге об этом на
Блог Degree Dev
В нем объясняется, как вы можете добавить 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();
Ответ 3
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
.
Ответ 4
Почему бы просто не сделать следующее?
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
Ответ 5
приведенный выше ответ работает отлично, пока браузер имеет фокус, если он не отправляет триггеры SendKeys.SendWait в зависимости от того, какое приложение имеет фокус.
ie.Eval("var e = $.Event('keydown');e.which = $.ui.keyCode.ENTER;$('#myTextBox').trigger(e);");
Будучи немного неуклюжим, это вызовет нажатие кнопки независимо.
Ответ 6
Попробуйте следующее:
// 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.