Ruby on rails 我如何与cucumber&;韦伯拉特公司;selenium:选择器/标记在响应中正好存在两次?
我对cucumber和webrat使用了以下步骤定义,一切都很好:Ruby on rails 我如何与cucumber&;韦伯拉特公司;selenium:选择器/标记在响应中正好存在两次?,ruby-on-rails,regex,selenium,cucumber,webrat,Ruby On Rails,Regex,Selenium,Cucumber,Webrat,我对cucumber和webrat使用了以下步骤定义,一切都很好: Then /^I should see "([^\"]*)" worker in the workerlist/ do |number| response.should have_selector("td.worker_name", :count=>number) end 现在我转到selenium,have_选择器“不知何故”不再采用:count参数。我发现以下错误: ArgumentError: wrong n
Then /^I should see "([^\"]*)" worker in the workerlist/ do |number|
response.should have_selector("td.worker_name", :count=>number)
end
现在我转到selenium,have_选择器“不知何故”不再采用:count参数。我发现以下错误:
ArgumentError: wrong number of arguments (2 for 1)
./features/step_definitions/worker_generation_steps.rb:15:in `have_selector'
接下来,我尝试使用assert_contain,但找不到检查确切数字的正则表达式。不幸的是,如果“class=“worker\u name”的数量小于预期数量,则以下步骤定义将通过
Then /^I should see "([^\"]*)" worker in the workerlist/ do |number|
assert_contain (/((.*)(class="worker_name"))#{number}/m)
end
我的问题是:
1.)在我的示例中,“td.worker_name”出现了很多次,我如何检查最简单的方法
2.)如果无法绕过正则表达式:我如何重写上面的正则表达式,以便它检查“class=”worker_name“的确切数目
非常感谢 我没有Ruby或Webrat的经验,但我会这样做
begin
assert_equal "2", @selenium.get_xpath_count("//td[@class='worker_name']")
rescue Test::Unit::AssertionFailedError
@verification_errors << $!
开始
断言等于“2”,@selenium.get\u xpath\u计数(//td[@class='worker\u name']))
救援测试::单元::断言失败错误
@验证错误感谢AutomatedTester的回答,我找到了以下有效解决方案:
Then /^I should see "([^\"]*)" worker in the workerlist/ do |number|
response.selenium.get_xpath_count("//td[@class='worker_name']").to_i.should be(number.to_i)
end
Webrat::Selenium:Matchers不直接支持get\u xpath\u count,但我可以通过底层的Selenium api访问它