Hot用WatIn触发SelectList更改事件和我的值

时间:2014-10-06 05:15:11

标签: c# .net watin

我正在使用WatIn,就像你从标题中看到的那样,在vs-2012(4.5)c#上工作。

我的目标是使用我的值进行SelectList - >更改事件。在我正在工作的webPage中,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);

任何人都知道它是否可行吗?如果是的话怎么办?

1 个答案:

答案 0 :(得分: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();");