下拉菜单元素  

概述

下拉菜单由两种元素类型组成:Watir::SelectWatir::Option

可以通过调用 Browser#selectBrowser#select_list 来访问它们。创建 SelectCollection 可以通过 Browser#selectsBrowser#select_lists 来实现,而创建 OptionColection 可以通过 Browser#optionsSelect#options 来实现。有关定位 Select 元素的不同方法,请查看我们的 元素定位指南

请注意,Option 元素通常应通过 Select 元素实例来访问。

浏览器驱动程序Option 元素的处理方式与其他元素不同。它们是唯一不需要在页面上显示即可点击的元素类型。这意味着您不必先点击 Select 元素就可以使用它。

请注意,许多下拉菜单实现将 JavaScript 与非标准元素结合使用来实现此效果。由于这些元素的处理方式与 Option 和 Select 元素不同,因此 Watir 无法将它们视为下拉菜单。

SelectOption 元素也继承了标准 网页元素 的方法。

常用或特殊方法

标准设置器接口

此功能在 Watir 7 beta 2 中添加。

Select#set#select 的别名。它接受多种不同的参数类型。

  • 当第一个参数值为 StringRegexp 时,Watir 将选择第一个通过 valuetextlabel 属性匹配的 Option
  • 当第一个参数值为 Numeric 时,Watir 将将其转换为字符串,并选择第一个通过 value、text 或 label 属性匹配的 Option
  • 当使用 :value:text:label 关键字时,Watir 将选择第一个在该特定属性上匹配的 Option
  • 当传入 Array 或多个参数时,Watir 将 Select 对象视为具有 multiple 属性,并将选择每个通过 valuetextlabel 属性匹配 Array 中每个值的 Option

示例

browser = Watir::Browser.start 'watir.com/examples/simple_form.html'

# Non-Multiple Select List
country_dropdown = browser.select(id: 'country')
country_dropdown.text == 'select your country' # => true
country_dropdown.include? '1' # => true
country_dropdown.include? 'Sweden' # => true
country_dropdown.select /en/
country_dropdown.value == '1' # => true
country_dropdown.select(text: 'Denmark')
country_dropdown.selected?('Denmark') == true # => true
country_dropdown.select(text: 'Denmark')
country_dropdown.selected?('1') == true # => true
country_dropdown.select(value: '2')
country_dropdown.selected?('Norway') == true # => true
country_dropdown.select(label: 'Sverige')
country_dropdown.selected?('Sweden') == true # => true

# Multiple Select List
country_dropdown = browser.select(id: 'languages')
country_dropdown.text == 'EN' # => true (first matching option)
country_dropdown.clear
country_dropdown.text.nil? # => true
country_dropdown.select /an/ # Not an Array, so only first matching selected
country_dropdown.value == '1' # => true
country_dropdown.selected?('3') == false # => true 
country_dropdown.select [/an/] # An Array, so only first matching selected
country_dropdown.value == '1' # => true (value of first selected)
country_dropdown.selected?('3') == true # => true (all matching selected)

browser.close

最后更新:2021 年 3 月 28 日