【问题标题】:Robot Framework "Select From List" command error机器人框架“从列表中选择”命令错误
【发布时间】:2016-11-25 08:47:44
【问题描述】:

我正在尝试通过 Robot Framework 原生关键字“从列表中选择”命令选择一个选项,但是它失败并显示错误消息:

html页面来源:

<select id="reason" placeholder="Please select" style="width: 100%; display: none;" class="m-b-xs" data-role="combobox" aria-disabled="false" aria-readonly="false">
<option value="a">Assume</option>
<option value="b">New</option>
<option value="c">Renew</option>
<option value="d">Purchase</option>
<option value="e">Refinance</option>
<option value="f">Reschedul</option>
<option selected="selected" value="New">New</option>
</select>

我使用了值“假设”或“a”:

Choose Application Reason
    Select From List    xpath=//select[@id="reason"]    Assume

测试失败并显示错误消息:

INFO : Selecting option(s) 'Assume' from list
'xpath=//select[@id="reason"]'.  
.....
FAIL :ValueError: Option 'Assume' not in list 'xpath=//select[@id="reason"]'.
INFO : Selecting option(s) 'a' from list 'xpath=//select[@id="reason"]'.
.....
FAIL : ValueError: Option 'a' not in list 'xpath=//select[@id="reason"]'.

但如果我将值“假设”替换为默认值“新”:

Choose Application Reason
    Select From List    xpath=//select[@id="reason"]    New

测试通过了。

谁能帮忙?提前谢谢。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    我在选择下拉菜单方面遇到了类似的问题,我尝试了这个并为我工作。

    click element   xpath=//select[@id="reason"]
    wait until element is visible   xpath=//option[contains(text(),'${label}')]
    click element   xpath=//option[contains(text(),'${label}')]
    

    如果您想从列表中选择任何静态值。

    click element   xpath=//select[@id="reason"]
    click element   xpath=//select/option[0]
    

    你也可以使用文字等号,

    click element   xpath=//option[text()='${label}')]
    

    忽略空白,

    click element   xpath=//option[normalize-space(text())='Assume']
    

    【讨论】:

      【解决方案2】:

      我猜它是因为 New 是默认选项。 对我来说,关键字“按值从列表中选择”效果更好。 试试:

      Select From List by Value    xpath=//select[@id="reason"]    a
      

      如果它不起作用 - 我曾经有一个元素状态错误 - 在从列表中选择之前添加 Click Element:

      Click Element    xpath=//select[@id="reason"]
      Select From List by Value    xpath=//select[@id="reason"]    a
      

      【讨论】:

        【解决方案3】:

        应该使用Label,表示文字

        例如

        Select From List By Label   xpath=//select[@id="reason"]    Assume
        

        【讨论】:

          【解决方案4】:

          使用Index的其他替代方法

          Select From List By Index    xpath=//select[@id="reason"]    1
          

          【讨论】:

            【解决方案5】:

            我认为你应该按值选择:

            select from list by value       xpath=//select[@id="reason"]     a
            

            【讨论】:

              【解决方案6】:

              当你想给a赋值时, 我就是这样解决问题的。

              ***Keywords***

              Select By Value
              
                 [Arguments]    ${locator}    ${value}
              
                 Page Should Contain Element    ${locator}  10
              
                 Select From List By Value      ${locator}  ${value}
              
                 List Selection Should Be       ${locator}  ${value}
              

              活动时间,

              ***Test Case ***

              Choose Application Reason
                  Select By Value  reason  a
              

              【讨论】:

                猜你喜欢
                • 2017-09-10
                • 2012-04-24
                • 2019-03-16
                • 1970-01-01
                • 2014-09-15
                • 2016-09-24
                • 2020-10-29
                • 2014-03-02
                • 2021-08-14
                相关资源
                最近更新 更多