我已经完成了一次搜索,大部分相关的谷歌搜索结果一般只会从下拉列表中选择一个元素。但是,遗憾的是,动态生成下拉列表中元素的ID。
这是一个基本测试用例,所以我基本上只需要选择第一个例子。下拉列表中的元素的文本也是相同的(不确定是否有帮助)。
有这样的例子吗?
我使用黄瓜与caybara(使用硒驱动)整合
答案 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)
我尝试从模态下拉列表中选择一个选项。在尝试了所有列出的方法以及其他线程中的许多其他方法后 - 我完全放弃了,而不是使用 clicks 或 select_option 只是使用了键盘键< /p>
find(:select, "funding").send_keys :enter, :down, :enter
如果它仍然抱怨 - 尝试:
find(:select, "funding", visible: false).send_keys :enter, :down, :enter
像魅力一样工作,从下拉列表中选择第一个选项。