Watin не будет запускать событие .change() вручную

У меня есть список выбора:

<select style="ime-mode: auto; background-color: rgb(255, 255, 255);" id="il_worksheettype" class="ms-crm-SelectBox" tabIndex="1100" name="il_worksheettype" attrPriv="7" attrName="il_worksheettype" req="2" defaultSelected="null">
<option title="" selected="selected" value=""></option>
<option title="Underwriting" value="102790001">Underwriting</option>
<option title="Claim" value="102790000">Claim</option></select>

и у меня есть код:

worksheetTypes.Option("Claim").Select();
ProtectionInfoTab.Frame(Find.ById("contentIFrame")).Eval("$('#il_worksheettype').change();");

Проблема в том, что по какой-то причине он просто не запускает javascript или, по крайней мере, у меня такое впечатление. Когда этот код не генерирует исключений, но он просто ничего не делает, когда должен отображать параметры в другом списке выбора.

Любые идеи?


person Ben    schedule 11.09.2014    source источник


Ответы (3)


Используйте RunScript вместо Eval. Eval, кажется, связывает изменение, но не запускает его.

У меня работало RunScript, где pk — ссылка на элемент.

Element pk = BrowserInstance.TextField("password");    
pk.DomContainer.RunScript("$('#" + pk.Id + "').change();");    
person Abhay    schedule 12.03.2015

В вашем операторе Eval ваша функция изменения используется для привязки события, а не для его запуска. Чтобы вызвать событие, используйте следующее:

$('#il_worksheettype').trigger('change');

http://api.jquery.com/change/

person Alex Raul Bughiu    schedule 11.09.2014
comment
Какие ошибки вы получаете в окне консоли JavaScript? - person Alex Raul Bughiu; 11.09.2014
comment
как это сделать в ИЕ? - person Ben; 11.09.2014

Вы можете использовать приведенный ниже код для IE, чтобы вызвать событие изменения после выбора параметра из списка выбора.

browserInstance.RunScript("$('#il_worksheettype').change()");

Для фаерфокса

browserInstance.RunScript("window.$('#il_worksheettype').change()");
person Sham    schedule 12.09.2014