Capybara,从下拉列表中选择第一个选项?

时间:2015-10-01 14:40:27

标签: selenium cucumber capybara

我已经完成了一次搜索,大部分相关的谷歌搜索结果一般只会从下拉列表中选择一个元素。但是,遗憾的是,动态生成下拉列表中元素的ID。

这是一个基本测试用例,所以我基本上只需要选择第一个例子。下拉列表中的元素的文本也是相同的(不确定是否有帮助)。

有这样的例子吗?

我使用黄瓜与caybara(使用硒驱动)整合

4 个答案:

答案 0 :(得分:5)

您可以找到第一个选项元素,然后使用select_option方法选择它。

例如,如果选择列表的ID为“select_id”,则可以执行以下操作:

first('#select_id option').select_option

正如@TomWalpole所提到的,这不会等待元素出现。执行以下操作之一会更安全:

first('#select_id option', minimum: 1).select_option

find('#select_id option:first-of-type').select_option

答案 1 :(得分:3)

或者,您可以获取第一个元素文本,然后通过select函数选择它:

first_element = find("#id_of_dropdown > option:nth-child(1)").text
select(first_element, :from => "id_of_dropdown")

答案 2 :(得分:0)

经过两天的搜索和阅读,这篇文章是其中几篇有用的文章之一。希望这可以帮助其他人!

我创建了一些类似的方法,请改名。我更改了它。

def some_dropdown(id, text)
  dropdown = find(id).click
  dropdown.first('option', text: text).select_option
end

def select_form
  within 'content#id' do
    some_dropdown('#id', text)

    click_link_or_button 'Submit'
  end
end

我还引用了this

答案 3 :(得分:0)

我尝试从模态下拉列表中选择一个选项。在尝试了所有列出的方法以及其他线程中的许多其他方法后 - 我完全放弃了,而不是使用 clicksselect_option 只是使用了键盘键< /p>

find(:select, "funding").send_keys :enter, :down, :enter

如果它仍然抱怨 - 尝试:

find(:select, "funding", visible: false).send_keys :enter, :down, :enter

像魅力一样工作,从下拉列表中选择第一个选项。