如何在Selenium webdriver Ruby脚本中放置断言?

时间:2014-04-28 22:33:40

标签: ruby automation selenium-webdriver assertions

我希望使用脚本中提供的值检查UI上的值。在比较这两个时,它应该在控制台中显示消息“test passed”。

我写了以下代码: -

browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").value.should == "$466,634,599.67"

但它在控制台上没有显示任何内容。接下来可能需要什么?

谢谢! 阿布舍克巴克

2 个答案:

答案 0 :(得分:1)

断言,例如.should==,通常在测试框架中使用,例如RSpec,MiniTest,Cucumber等。这些测试框架旨在报告断言的通过或失败结果。

鉴于您没有使用测试框架,您需要手动处理结果输出。

最简单的方法是删除断言部分并使用if语句:

element_value = browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").text
if element_value == "$466,634,599.67"
  puts 'Test passed'
else
  puts 'Test failed'
end

请注意,puts语句用于将结果输出到控制台(除非您更改了默认输出位置)。

或者,如果你想使用断言,你可以这样做:

element_value = browser.find_element(:xpath,"//*[@id="total"]/tbody/tr/td[4]/span").text
element_value.should == "$466,634,599.67"
puts 'Test passed'

在这种方法中,如果测试失败,断言将引发异常。断言将停止代码的执行,因此不会输出'测试通过'消息(如预期的那样)。如果测试通过,则测试通过'消息会输出。

答案 1 :(得分:0)

我为此目的使用capybara gem。它可以检查几乎所有前端的可能性。 代码看起来像这样:

describe "User pages" do
  subject { page }
  describe "index" do
    before(:each) do
      sign_in user
      visit users_path
    end
    it { expect(page).to have_selector('li', text: user.name) }
end