2014-10-06 56 views
0

我正在使用WatIn就像你看到从标题,工作在vs-2012(4.5)c#。热来触发SelectList更改事件与我的价值WatIn

我的目标是使SelectList - >改变事件与我的价值。在我工作的网页有SelectList与值109,110,111 ....,我需要在此SelectList上做事件更改,但与我的价值2014 。如果我按F12-FireBug(控制台)并更改我自己的值,然后从列表中选择它的所有工作正常,但我需要在代码中执行此操作。

这里的html代码

<select name="endYear" class="dateText" onchange="setupDays('end'); 
verifyDate('end'); evaluateDateRange();"> 
<option value="109">109</option> 
<option value="110">110</option> 
<option value="111">111</option> 
<option value="112">112</option> 
<option value="113">113</option> 
<option value="114">114</option> 
</select> 

这里是我的尝试,但我得到的错误'$' is undefined

browser.DomContainer.Eval("$('#startYear select option').attr('selected', '2014');"); 

SelectList ddlStartYear = PopupDateFrame.SelectList(Find.ByName("startYear")); 
    string js = string.Format("$('#startYear select option').attr('selected', '2014').change();", ddlStartYear.Id); 
    browser.Eval(js); 

做任何一个知道这是否是甚至更多钞票来怎么办?如果是,怎么办?

回答

0

代码的元素添加到列表的选项是:

string js = ""; 
js = js + "var theSelectList = document.getElementById('endYear'); "; 
js = js + " AddSelectOption(theSelectList, \"Some Description\", \"2014\", true);"; 
js = js + " function AddSelectOption(selectObj, text, value, isSelected) "; 
js = js + "{"; 
js = js + " if (selectObj != null && selectObj.options != null)"; 
js = js + "{"; 
js = js + " selectObj.options[selectObj.options.length] = new Option(text, value, false, isSelected);"; 
js = js + "}}"; 

browser.Eval(js); 

要执行程序onchange事件:

listReference.FireEvent("onchange"); 

的另一种方式做的大火,是在事件执行的事件被激发的是查看网页的来源,如果你发现了对js函数的调用,你可以设置元素的值,然后从Watin中调用那些需要的参数并避免触发事件。在某些情况下,这可能起作用,但在其他情况下可能不起作用,但值得指出的是这一点。

就像在这个特殊的例子,你可以设置元素的值,然后手动调用三个函数呼吁onchange事件,如:

browser.Eval("setupDays('end');verifyDate('end');evaluateDateRange();");