Javascript Watin无法从选择列表中选择选项

Javascript Watin无法从选择列表中选择选项,javascript,asp.net-mvc,watin,Javascript,Asp.net Mvc,Watin,我正在使用WATIN来完成一个动态创建的表单,它可以包含几个SelectList,这些都是javascript控制的选择列表。输出选择列表格式的样本 <select title=" " style="width: 300px;" name="NameHere" data-bind="value: NameHere.AnswerCode" class="fieldInputElement pickList"> <option selected=

我正在使用WATIN来完成一个动态创建的表单,它可以包含几个SelectList,这些都是javascript控制的选择列表。输出选择列表格式的样本

<select title=" " style="width: 300px;" 
    name="NameHere" 
    data-bind="value: NameHere.AnswerCode"
    class="fieldInputElement pickList">
    <option selected="" value=""></option>
    <option class="answerTextWithNote" value="A">alpha</option>
    <option class="answerTextWithNote" value="B" data-guidance="E.g. minor ">bravo</option>
    <option class="answerTextWithNote" value="C" data-guidance="E.g. b">charlie</option>
    <option class="answerTextWithNote" value="C" data-guidance="E.g. c">chatlie</option>
</select>
返回有关索引的错误,但

string y = window.SelectList(Find.ByName("NameHere")).Option(x[1].ToString()).ToString();
将为索引选项指定正确的值

有谁能告诉我如何触发选择,因为我已经尝试过聚焦和按键,但都没有乐趣


selectlist正在使用“Selected”插件,如果这有帮助的话?

下面的内容有些不好看。。。。但是它起作用了

使用

IE8 WatiN 2.0 单元测试 此处选择的示例: 我无法重现您的索引错误;我可以通过索引访问SelectList选项,无需任何问题,请参见下面的代码。但是访问它们没有帮助,因为Selected有自己的表示标记

因此,我使用的是所选的HTML元素,而不是SelectList,而且效果更好

[Test]
public void ChosenTest()
{
    IE myIE = new IE(true);
    myIE.GoTo("http://davidwalsh.name/dw-content/jquery-chosen.php");

    myIE.SelectList(Find.ByClass("chosen chzn-done")).WaitUntilExists();  //Needed as sometimes the controls were not fully loaded; unable to get item not found exceptions once this was added.

    Console.WriteLine("ByIndex:" + myIE.SelectList(Find.ByClass("chosen chzn-done")).Options[3].Text);   //To show no index out of bounds error.
    //  Just for reference --> myIE.SelectList(Find.ByClass("chosen chzn-done")).Options[3].Select();  //Has no effect.

    string id = myIE.SelectList(Find.ByClass("chosen chzn-done")).Id;
    myIE.Div(id + "_chzn").Div(Find.ByClass("chzn-drop")).ElementWithTag("li", Find.ByIndex(3)).Click();
    myIE.Div(id + "_chzn").Links[0].Spans[0].Click();  //Needed or the SelectList-ish stays open.
}
查找ByClass是在示例页面上控件ID更改时完成的。
WaitUntilExists排除了间歇性故障。

以下情况有些不太妙。。。。但是它起作用了

使用

IE8 WatiN 2.0 单元测试 此处选择的示例: 我无法重现您的索引错误;我可以通过索引访问SelectList选项,无需任何问题,请参见下面的代码。但是访问它们没有帮助,因为Selected有自己的表示标记

因此,我使用的是所选的HTML元素,而不是SelectList,而且效果更好

[Test]
public void ChosenTest()
{
    IE myIE = new IE(true);
    myIE.GoTo("http://davidwalsh.name/dw-content/jquery-chosen.php");

    myIE.SelectList(Find.ByClass("chosen chzn-done")).WaitUntilExists();  //Needed as sometimes the controls were not fully loaded; unable to get item not found exceptions once this was added.

    Console.WriteLine("ByIndex:" + myIE.SelectList(Find.ByClass("chosen chzn-done")).Options[3].Text);   //To show no index out of bounds error.
    //  Just for reference --> myIE.SelectList(Find.ByClass("chosen chzn-done")).Options[3].Select();  //Has no effect.

    string id = myIE.SelectList(Find.ByClass("chosen chzn-done")).Id;
    myIE.Div(id + "_chzn").Div(Find.ByClass("chzn-drop")).ElementWithTag("li", Find.ByIndex(3)).Click();
    myIE.Div(id + "_chzn").Links[0].Spans[0].Click();  //Needed or the SelectList-ish stays open.
}
查找ByClass是在示例页面上控件ID更改时完成的。 等待者排除了间歇性故障