从下拉列表中选择元素而不使用Capybara

时间:2014-04-29 08:58:00

标签: html ruby selenium capybara

我正在尝试使用capybara(ruby绑定)从下拉列表中选择一个没有id或唯一类的项目,但我似乎无法这样做。

有问题的选择框如下所示:

<select data-bind="options: environments, optionsText: 'name', value: selectedEnvironment,   optionsCaption: 'Choose...'" class="form-control">

尝试做:

select("option",:from "#panel > div.panel-body > form > div:nth-child(1) > select")

不起作用,但我可以使用

找到选择字段
page.find("#panel > div.panel-body > form > div:nth-child(1) > select")

文档说select方法需要选择框的id,name或label,但肯定必须有一种方法可以从下拉列表中选择比这更具体的东西。除了select()之外我还能使用另一种方法吗?还是我必须回到使用纯硒?

1 个答案:

答案 0 :(得分:1)

如果您想要更多地控制您选择的选项,则需要:

  1. 找到选项元素(使用findall等)
  2. 使用select_option方法
  3. 例如,如果您只想选择第一个选项:

    option = page.first("#panel > div.panel-body > form > div:nth-child(1) > select option")
    option.select_option
    

    或者如果你想选择最后一个:

    options = page.all("#panel > div.panel-body > form > div:nth-child(1) > select option")
    options[-1].select_option