我正在使用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);
任何人都知道它是否可行吗?如果是的话怎么办?
答案 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();");