Watin不能从选择列表中选择一个选项

Watin can't select an option from a select list

本文关键字:选择 一个 选项 不能 列表 Watin      更新时间:2023-09-26

我使用WATIN来完成一个动态创建的表单,它可以包含几个SelectLists(这些是javascript控制的拾取列表)。输出的选择列表格式示例为;

<select title=" " style="width: 300px;" 
    name="NameHere" 
    data-bind="value: NameHere.AnswerCode"
    class="fieldInputElement pickList">
    <option selected="" value=""></option>
    <option class="answerswerTextWithNote" value="A">alpha</option>
    <option class="answerswerTextWithNote" value="B" data-guidance="E.g. minor ">bravo</option>
    <option class="answerswerTextWithNote" value="C" data-guidance="E.g. b">charlie</option>
    <option class="answerswerTextWithNote" value="C" data-guidance="E.g. c">chatlie</option>
</select>

不幸的是,watin似乎无法选择列表和任何选项,返回一个错误。

的代码
window.SelectList(Find.ByName("NameHere")).Options[2].Select();

返回关于索引的错误,尽管

string y = window.SelectList(Find.ByName("NameHere")).Option(x[1].ToString()).ToString();

将为索引选项分配正确的值。

有没有人能告诉我如何触发选择,因为我已经尝试了focus()和keydown都没有快乐。

selectlist是使用' selected '插件,如果这有帮助吗?

下面的内容有些不好看....但是…它的工作原理。

使用

  • IE8
  • WatiN 2.0
  • NUnit
  • 这里选择的例子:http://davidwalsh.name/dw-content/jquery-chosen.php

我无法重现您的索引错误;我可以通过索引访问SelectList选项而不会出现问题(参见下面的代码)。但是…访问它们没有帮助,因为Chosen有自己的表示标记。

所以,我用选择的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消除了间歇性故障。