Selenium RC fireEvent () не работает в C # - PullRequest
3 голосов
/ 17 октября 2011

Я пишу автоматизированный тест для проверки страницы регистрации. Каждое из текстовых полей на этой странице проверяется на событие размытия. Кнопка регистрации доступна, только если проверка для всех текстовых полей прошла успешно.

Я выполнил для каждого текстового поля следующее

selenium.Type (textbox_id, content); // где контент генерируется программно в каждом раунде теста selenium.FireEvent (textbox_id, "blur");

Вся информация о регистрации заполняется, но не происходит размытие. Кнопка регистрации остается отключенной. Кроме того, я написал точно такой же тест в Java, который прошел без малейших проблем.

Я бы хотел закончить писать это на Java, но я ограничен языком, который я могу использовать для этой задачи; C #. Может кто-нибудь сказать мне, что может быть причиной этой проблемы.

1 Ответ

0 голосов
/ 25 октября 2011

У меня была та же проблема, и я нашел решение, войдя в DOM и запустив событие размытия, используя javascript.Я написал метод как метод расширения на IWebElement.Смотрите код ниже:

public static void Blur(this IWebElement element)
{
    var jsExecutor = (IJavaScriptExecutor)Context.Driver;

    try
    {
        jsExecutor.ExecuteScript(
            @"var fireOnThis = arguments[0];
             fireOnThis.scrollIntoView(false);
             var evt = 'blur';      
             if( document.createEvent ) {
             var evObj = document.createEvent('MouseEvents');
             evObj.initEvent(evt, true, false);
             fireOnThis.dispatchEvent(evObj);
             } else if (document.createEventObject) {
            fireOnThis.fireEvent('on'+evt);
        }", element);
    }
    catch
    {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...