gpt4 book ai didi

ruby-on-rails - Rails + Capybara : "has_select(. ..,选项 :. ..) 失败,即使选择存在?

转载 作者:行者123 更新时间:2023-12-03 12:20:14 28 4
gpt4 key购买 nike

我正在使用 Rails 4、Cucumber、Capybara。对于这个特定的场景,我使用了 @javascript 标签,它使用了 Selenium 驱动程序。

在我的测试中,我正在测试一个使用 jQuery + ajax 的选择下拉列表。以下是步骤:用户进入表单页面,然后单击下拉菜单将其展开,然后单击“创建新颜色...”选项。选择后,会出现一个文本字段,用户可以输入颜色名称。当他们按下 enter 键时,将创建该颜色并重新加载选择下拉列表以在选项中包含该新颜色。

步骤定义:

When(/^I create a new color named "(.*?)"$/) do |color_name|
find("option[id='new_color_option']").click
fill_in("color[name]", with: color_name)
find(:id, 'new_color_text_field').native.send_keys(:enter)
end

Then(/^"(.*?)" should be on the color list$/) do |color_name|
expect(page).to have_select("color", options: [color_name])
end

它失败了:

Then "Blue" should be on the color list       # features/step_definitions/cms/products_steps.rb:175
expected to find select box "color" but there were no matches. Also found "Blue Create a new color...", which matched the selector but not all filters. (Capybara::ExpectationNotMet)
./features/step_definitions/cms/products_steps.rb:177:in `/^"(.*?)" should be on the color list$/'
features/cms/products.feature:53:in `Then "Blue" should be on the color list'

问题是它找不到我的选择下拉列表。我盯着驱动程序打开浏览器,甚至在中间添加了一个 sleep 20 以便我可以检查 HTML。

在添加颜色之前:

    <select class="colors" name="color">

<option id="new_color_option" value="">

Create a new color...

</option>

</select>

添加颜色后:

    <select class="colors" name="color">

<option value="1" selected="selected">

Blue

</option>
<option id="new_color_option" value="">

Create a new color...

</option>

</select>

为什么找不到我选择的下拉菜单?

最佳答案

你需要改变

expect(page).to have_select("color", options: [color_name])

使用 with_options 而不是 options

expect(page).to have_select("color", with_options: [color_name])

options 对所有选项进行精确匹配,其中 with_options 是部分匹配。

关于ruby-on-rails - Rails + Capybara : "has_select(. ..,选项 :. ..) 失败,即使选择存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814496/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com