2011-08-03 108 views

回答

2

文本斷言不webdriver的一部分,但你可以這樣做:

assert driver.find_element(:tag_name, "body").text.include?(str) 
+0

未定義的main方法'assert':Object(NoMethodError) – Jack

+0

這假設您使用的是標準測試框架,如包含assert方法的TestUnit或MiniTest。這對於Ruby中的任何實際測試都是非常必要的。 – bbbco

1

硒的webdriver不來與一個內置的斷言庫,您需要有額外的一個來迎合你的斷言需求。

現在來到紅寶石的語言,那麼最好的方法就是使用rspec。

你如何使用:
1)安裝把它放在你的Gemfile的RSpec的,並做了捆綁安裝
2)需要在你的框架 'rspec的'
3)使用rspec的期許
expect(actual-text).to include(expected-text)

這裏充滿單腳本示例

require 'selenium-webdriver' 
require 'rspec' 
include RSpec::Matchers 

def assert_text_present(expected_text) 
    expect(driver.find_element(:tag_name=>'body').text.include(expected_text)).to be true 
end 

driver = Selenium::WebDriver.for :chrome 
driver.get("https://rubygems.org/gems/testnow") 
assert_text_present("Kaushal") 

此外,您可以在一個程序定義這個方法def assert_text_present或者你的框架的幫助文件,並在需要時重複使用它。

注意:如果你把這個方法的框架,你可以使用包括直接匹配(expect(driver.find_element(:tag_name=>'body').text).to include(expected_text)

希望它可以幫助!

相關問題