Не элегантно, но это сработало.

ираю какое-то значение, при изменении делаю итого. Но каким-то образом это событие не запускается командой типа селен.

Я также попробовал typeKey и typeAt .. Но безуспешно. Любой обходной путь для этого?

Ответы на вопрос(7)

есть команда fireEvent, которую вы можете использовать для ручного запуска события onChange после ввода значения. Может быть, это решит вашу проблему?

У вас всегда есть возможность ввести значение и вручную вызвать фактическое событие OnChange из кода.

Есть открытый вопрос об этомтекст ссылки Проблема с тем, что FireFox Windows не активен и препятствует запуску OnChange.

Попробуйте это перед использованием команды typeKeys:

selenium.selectWindow(null);
 Jigar Shah17 янв. 2011 г., 10:16
Я использую IDE. Это то, что я сделал. [#Executing: | getEval | selenium.selectWindow (null) || ] Не работает. Ошибка: selenium.selectWindow не является функцией
 StefanE17 янв. 2011 г., 10:43
Обычно я работаю только с Selenium RC, и я не уверен, что можно даже решить некоторые проблемы с IDE. Вы должны обновить свой вопрос с этой информацией

выполните следующие 3 команды по порядку

Typekeys   targetID    input
FireEvent  targetID    focus
Type       targetID    input

Источник выглядит так (вход был буквойr)

<tr>
<td>typeKeys</td>
<td>//form/input</td>
<td>r</td>
</tr>
<tr>
<td>fireEvent</td>
<td>//form/input</td>
<td>focus</td>
<tr>
<td>fireEvent</td>
<td>//form/input</td>
<td>focus</td>
</tr>
<tr>
<td>type</td>
<td>//form/input</td>
<td>r</td>
</tr>
</tr>
<tr>
<td>type</td>
<td>//form/input</td>
<td>r</td>
</tr>

созданным с помощью Ajax.
Когда пользователь вводит поле, система отображает AJAXdivс несколькими вариантами, каждый как ссылка сtarget='#'

И что еще хуже, была вызвана функцияпо изменению() который заполнил системный флаг, и этот флаг будет использоваться в качестве проверки в форме. submit () (о, боль)

В любом случае, мое решение для этого:
1 - СеленSendKeys команда, чтобы появился Ajax div

<tr>
    <td>sendKeys</td>
    <td>id=txtTipoDocumento</td>
    <td>ipsum lorem</td>
</tr>

2 - дождаться появления ссылки с ожидаемой опцией

<tr>
    <td>waitForElementPresent</td>
    <td>link=ipsum lorem</td>
    <td></td>
</tr>

3 - селенclickAt ссылка

<tr>
    <td>clickAt</td>
    <td>link=ipsum lorem</td>
    <td>10,20</td>
</tr>


4 - Вот один из уловов: вручную запуститьпо изменению() А ТАКЖЕпятно Мероприятия. Кроме того, установите браузер, чтобы установить фокус наразные поле

 <tr>
        <td>fireEvent</td>
        <td>id=txtTipoDocumento</td>
        <td>blur</td>
    </tr>
    <tr>
        <td>fireEvent</td>
        <td>id=selSerie</td>
        <td>change()</td>
    </tr>
    <tr>
        <td>fireEvent</td>
        <td>id=selSerie</td>
        <td>blur</td>
    </tr>
    <tr>
        <td>focus</td>
        <td>id=imgDataElaboracao</td>
        <td></td>
    </tr>

5. Наконец, чтобы быть уверенным, я заставил Selenium выполнить команду ClickAt () на кнопке Submit формы,между командами mouseDown и MouseUp

<tr>
    <td>mouseDown</td>
    <td>id=btnSalvar</td>
    <td></td>
</tr>
<tr>
    <td>focus</td>
    <td>id=btnSalvar</td>
    <td></td>
</tr>
<tr>
    <td>clickAt</td>
    <td>id=btnSalvar</td>
    <td>10,20</td>
</tr>


Не элегантно, но это сработало.

попробуйте добавить эту команду в Selenium IDE:

fireEvent targetID blur

 OscuroAA10 дек. 2015 г., 01:32
Это должен быть принятый ответ (ИМХО). Это былоименно так что мне нужно! Кроме того, в моем случае это должно было использоваться сsendKeys скорее, чемtype, Большое спасибо за это, @trex.

https://code.google.com/p/selenium/issues/detail?id=5451

Это сработало для меня.

<tr>
    <td>sendKeys</td>
    <td>id=Quantity</td>
    <td>Type stuff here</td>
</tr>

ошибка что предотвращает выполнение некоторых событий, когда окно браузера не в фокусе. Это может быть проблемой, когда вы запускаете свои тесты автоматизации - которые могут печатать, даже если окно не в фокусе.

Чтобы исправить эту проблему, я вызвал событие изменения «вручную», добавив JavaScript в мои тесты.

//suppose "element" is an input field
element.sendKeys("value");
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("$(arguments[0]).change();", element);

Как вы могли заметить, я использую jQuery для запуска события изменения. Если вы не используете JQuery в своем приложении, вы можете проверитьВот как вызвать его с помощью ванильного JavaScript.

Надеюсь, это кому-нибудь поможет.

 ndtreviv02 июн. 2016 г., 12:45
Кажется, не работает для полей ввода файла

Ваш ответ на вопрос