我正在使用WatIn,就像您从标题中看到的,工作在vs-2012 (4.5) c#上。
我的目标是用我正在工作的SelectList ->change事件--那里有值109,110,111的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);有没有人知道这样做是否可行?如果是的话,怎么做?
发布于 2014-11-06 17:58:45
将元素添加到list选项的代码如下:
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();");https://stackoverflow.com/questions/26210356
复制相似问题