2014-10-06 19 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();");