Watin赢得';t手动触发.change()事件

本文关键字:change 事件 赢得 Watin | 更新日期: 2023-09-27 18:21:33

我有一个选择列表:

<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,或者至少这是我得到的印象。当这段代码没有抛出异常,但当它应该在另一个选择列表上显示选项时,它似乎什么都没做。

有什么想法吗?

Watin赢得';t手动触发.change()事件

使用RunScript而不是EvalEval似乎绑定了更改,但没有触发更改。

RunScript对我有用,其中pk是元素引用。

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

在Eval语句中,更改函数用于绑定事件,而不是触发事件。要触发事件,请使用以下命令:

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

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

从选择列表中选择一个选项后,您可以使用下面的IE代码来触发更改事件。

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

对于firefox

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