【问题标题】:Watin can't select an option from a select listWatin 无法从选择列表中选择选项
【发布时间】:2011-08-26 11:23:43
【问题描述】:

我正在使用 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>

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

代码

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

返回一个关于索引的错误,虽然

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

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

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

选择列表正在使用“Chosen”插件,如果这有帮助?

【问题讨论】:

    标签: javascript asp.net-mvc watin


    【解决方案1】:

    以下内容有点不漂亮......但是......它有效。

    使用

    我无法重现您的索引错误;我可以毫无问题地按索引访问 SelectList 选项(参见下面的代码)。但是...访问它们并没有帮助,因为 Chosen 有自己的演示标记。

    因此,我使用的是 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.
    }
    

    随着示例页面上控件 ID 的变化,查找 ByClass 已完成。 WaitUntilExists 消除了间歇性故障。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 2022-01-27
      • 2015-03-13
      • 1970-01-01
      • 2020-03-21
      相关资源
      最近更新 更多