События WatiN KeyPress и keyDown ничего не делают для SelectList - PullRequest
1 голос
/ 10 мая 2011

Я начинаю тестировать кодирование с использованием watiN, и у меня возникают проблемы с имитацией нажатия пользователем клавиши, когда фокус находится на SelectList.Это делается для проверки правильности работы функции JavaScript на стороне клиента, которая запускается событием OnKeyUp в SelectList.

Как я могу имитировать пользователя, который фокусируется на SelectList и нажимая клавишу «o»клавиатуры?

Я использую последнюю версию WatiN и провожу модульный тест на C # в VS2008.Я кодировал

ie = new IE(myTestPageURL);
SelectList mySelect = ie.SelectLists[0];
mySelect.Focus();
mySelect.KeyPress('o');
Assert.IsTrue(mySelect.SelectedItem != null);

В моем списке выбора есть опция под названием «Один», поэтому нажатие клавиши «o» должно привести к тому, что она будет выбранным элементом.Однако при вызове keyPress ничего не происходит, за исключением того, что SelectList теряет фокус, и мой тест не проходит.

Ответы [ 4 ]

0 голосов
/ 10 сентября 2012

У меня была похожая проблема с элементом управления календаря, и я решил ее, вызвав метод / событие .Blur () для элемента управления.

0 голосов
/ 12 мая 2011

Я использую SelectList.Select() для выбора выпадающих пунктов.

Но так как вы хотите протестировать событие javascript, вы можете попытаться явно вызвать событие javascript с помощью Element.FireEvent().

Кроме того, у объекта TextField есть метод TypeText(), который имитирует ввод текста пользователем и запускает все связанные с этим события, но я не увидел TypeText для SelectList. Может быть, вы можете найти решение с двумя.

0 голосов
/ 18 мая 2011

Спасибо, Грам.Использование Element.FireEvent работает для меня.Для всех, кто интересуется, код в конечном итоге выглядит следующим образом.

[TestMethod]
public void KeyboardSelection_OptionMatches()
{
    ie = new IE("http://localhost:7561/WebSite2/Default.aspx");
    SelectList mySelect = ie.SelectLists[0];
    mySelect.Focus();
    NameValueCollection nvc = new NameValueCollection();
    nvc.Add("charCode", ACharCode); //Constant for test - equals '65'
    nvc.Add("keyCode", ACharCode);
    // this should select the "A" option
    mySelect.FireEvent("onkeydown", nvc);
    // this should move the selected option to "aardvark"
    mySelect.FireEvent("onkeydown", nvc);
    string selectedValue = mySelect.SelectedItem.ToLower();
    ie.Close();
    Assert.AreEqual(selectedValue, "aardvark");
}

}

0 голосов
/ 10 мая 2011

Полагаю, у вас есть, но изучили ли вы

SelectList.SelectByValue

?

Это, по-видимому, сделает ваши тесты более повторяемыми, поскольку вы можете добавить что-нибудь в свой списокэто все еще работает.Кроме того, ваши тесты все равно должны прерываться, если элементы списка выбора не заполняются (по какой-либо причине).Выбор по значению повышает специфичность ваших тестов, а не просто заставляет их выбирать первый элемент, начинающийся с 'o'.

Fwiw - это то, что мы используем в производстве на моем нынешнем месте работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...