• select
  • Ruby selenium part10 选择

    select

    选择元素可能需要大量样板代码才能自动化. 为了减少这种情况并使您的测试更干净, 在Selenium的support包中有一个 Select 类. 要使用它,您将需要以下导入语句

    include Selenium::WebDriver::Support
    

    创建select对象

    select_element = driver.find_element(id: 'selectElementID')
    select_object = Select(select_element)
    

    Select对象现在将为您提供一系列命令,使您可以与 元素中选择一个选项.

    <select>
     <option value=value1>Bread</option>
     <option value=value2 selected>Milk</option>
     <option value=value3>Cheese</option>
    </select>
    

    获取

    从上述元素中选取第一个选项

    # Select an <option> based upon the <select> element's internal index
    select_object.select_by(:index, 1)
    
    # Select an <option> based upon its value attribute
    select_object.select_by(:value, 'value1')
    
    # Select an <option> based upon its text
    select_object.select_by(:text, 'Bread')
    

    遍历

    然后,您可以检视所有被选择的选项:

    # Return an Array[Element] of options that have been selected
    all_selected_options = select_object.selected_options
    
    # Return a WebElement referencing the first selection option found by walking down the DOM
    first_selected_option = select_object.first_selected_option
    

    过滤

    或者您可能只对 特定元素包含哪些选项的元素感兴趣:

    # Return an Array[Element] of options that the &lt;select&gt; element contains
    all_available_options = select_object.options
    

    取消选择

    如果要取消选择任何元素,现在有四个选项:

    # Deselect an <option> based upon the <select> element's internal index
    select_object.deselect_by(:index, 1)
    
    # Deselect an <option> based upon its value attribute
    select_object.deselect_by(:value, 'value1')
    
    # Deselect an <option> based upon its text
    select_object.deselect_by(:text, 'Bread')
    
    # Deselect all selected <option> elements
    select_object.deselect_all
    

    多选

    最后,一些特定元素允许您选择多个选项. 您可以通过使用以下命令确定您的选中元素是否允许多选:

    does_this_allow_multiple_selections = select_object.multiple?
    

    上一篇:Ruby selenium part9 弹框

    下一篇:Python 中的上下文管理器装饰器