【问题标题】:Use Watir to select item from dropdown list by item number?使用 Watir 按项目编号从下拉列表中选择项目?
【发布时间】:2017-07-01 12:01:55
【问题描述】:

有没有办法使用 Watir 按项目编号从下拉列表中选择项目?也就是说,当使用SelectList 时,option() 除了valuetext 之外,还有其他的吗?

我正在尝试在网页上运行一个进程,在该网页上选择下拉列表中的第一项,执行操作,转到第二项,再次执行操作,等等。这个下拉列表已经结束700 个选项!

HTML 如下所示:

<SELECT NAME="sl" SIZE="1">
    <option value="">&nbsp;</OPTION>
    <option value="abq">Abaza</option>
    <option value="abk">Abkhazian</option>
    ...
    <option value="zun">Zuni</option>
</SELECT>

SelectList 文档建议如下:

b.select_list(:name => 'sl').select_value("abq")

问题是我如何移动到下一个值?下一个 700 呢?有没有办法按项目编号选择?还是将这些值提取到一个数组中,然后循环遍历它们?

谢谢!

【问题讨论】:

    标签: html ruby web-scraping watir


    【解决方案1】:

    当您想通过文本或值以外的任何内容选择选项元素时,您可以直接定位并选择该元素。例如,等价于使用select_value方法是:

    b.select_list(:name => 'sl').option(value: 'abq').click
    

    您可以使用常用的定位器。要选择第二个选项,您可以使用:index 定位器(注意它是从 0 开始的):

    b.select_list(:name => 'sl').option(index: 1).click
    

    请注意,如果您想遍历每个选项,使用其中一种 Enumerable 方法来执行循环可能更有意义。这可以消除对索引的担心。但是,根据您计划采取的其他操作,可能无法正常工作。

    b.select_list(:name => 'sl').options.each do |option|
      option.click
      # Do other actions
    end
    

    【讨论】:

    • 贾斯汀,你又救了我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多