Hot可通过WatIn触发具有我的值的SelectList更改事件
本文关键字:SelectList 事件 我的 WatIn 可通过 Hot | 更新日期: 2023-09-27 18:25:35
我正在使用WatIn,就像你在标题中看到的那样,正在处理vs-2012(4.5)c#。
我的目标是使SelectList->change事件具有我的值。在我工作的网页中,有值为109110111…的SelectList,我需要对此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);
有人知道这样做是否可行吗?如果是,怎么做?
将元素添加到列表选项的代码是:
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();");