【发布时间】:2011-11-05 17:50:22
【问题描述】:
当我使用下面的功能、步骤和 HTML 运行测试时,测试执行没有错误(直到它在断言步骤上失败),但我可以看到下拉选择没有发生任何变化。我做错了什么?
HTML:
<div class='field'>
<label for="verification_value">Verification Number</label>
<input id="verification_value" type="text" />
</div>
<div class='field'>
<label for="month">Month</label>
<select id="month">
<option value="1">1 - January</option>
<option value="2">2 - February</option>
<option value="3">3 - March</option>
<option value="4">4 - April</option>
<option value="5">5 - May</option>
<option value="6">6 - June</option>
<option value="7">7 - July</option>
<option value="8">8 - August</option>
<option value="9">9 - September</option>
<option value="10">10 - October</option>
<option value="11">11 - November</option>
<option value="12">12 - December</option>
</select>
</div>
步骤:
When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
select(value, :from => field)
end
特点:
Feature: In order for this to work, a select menu should be changeable
@javascript
Scenario: A user follows the steps to successfully do fun stuff
Given I go to a page
And I fill in "verification_value" with "12345"
And I select "2 - February" from "month"
Then I should see "everything worked" within "body"
And I select "2" from "month" 实际上不会产生任何错误,它只是不会更改选择选项。它应该将选择设置为2 - February
我也用firefox驱动试了一下,结果一样
更新
关于正则表达式,我添加了puts 行,它确实被运行了
When /^(?:|I )select "([^"]*)" from "([^"]*)"$/ do |value, field|
puts "STEP MATCHED" # << it did put "STEP MATCHED"
select(value, :from => field)
end
我从默认的 web_steps.rb 复制了它,所以我很惊讶它对某些人不起作用,但对我来说很好。
【问题讨论】:
-
Cucumber 真的在调用这一步吗?当我尝试使用您提供的代码时,它与正则表达式不匹配,跳过了该步骤,并建议我使用正则表达式
/^I select "([^"]*)" from "([^"]*)"$/创建一个步骤。当我这样做时,它按预期工作。 -
只是为了排除它 - 您是否100% 确定该值未设置?会不会是后面那一步坏了?我倾向于在
select调用之后 截取屏幕截图,或者只截取sleep,以便您有足够的时间查看浏览器中发生的情况。
标签: html ruby selenium cucumber capybara