Capybara将选项文本下拉到数组中

Alp*_*mer 8 ruby capybara

我想将一个下拉列表的选项放入一个通常在水豚中的数组中.在这个过程之后,我希望有一个字符串的arrray,包含所有下拉选项.我已经尝试了下面的代码,但无论选项计数是多少,我的数组的长度都保持为1.

periods = Array.new()
periods = all('#MainContent_dd')
print periods.length
Run Code Online (Sandbox Code Playgroud)

Jus*_* Ko 25

问题是all('#MainContent_dd')返回所有具有id的元素MainContent_dd.假设这是您的下拉列表并且ID是唯一的,则预期periods.length为1(即periods选择列表).

你想要做的是获取option元素而不是select元素.

假设您的HTML是:

<select id="MainContent_dd">
    <option>Option A</option>
    <option>Option B</option>
    <option>Option C</option>
</select>
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

  periods = find('#MainContent_dd').all('option').collect(&:text)
  p periods.length
  #=> 3
  p periods
  #=> ["Option A", "Option B", "Option C"]
Run Code Online (Sandbox Code Playgroud)

这样做是:

  1. find('#MainContent_dd') - 查找要从中获取选项的选择列表
  2. all('option') - 获取选择列表中的所有选项元素
  3. collect(&:text) - 收集每个选项的文本并将其作为数组返回