2011-01-28 103 views
17

我正在使用Mechanize與幾個網頁進行交互,我試圖確定給定的表單提交是否導致錯誤。確定一個字符串是否包含任何一組字符串

現在我這樣做:

agent.page.body.include?("I'm an error message!") 

但我剛發現另一錯誤消息。因爲我不想做的事:

agent.page.body.include?("I'm an error message!") || agent.page.body.include?("Another error message") 

我怎麼能確定頁面身體是否包含要麼錯誤信息?

回答

23
error_messages.any? { |mes| agent.page.body.include? mes } 
+4

有了,當然是:`error_messages = [「我的錯誤信息!」,「另一條錯誤消息」]` – Phrogz 2011-01-28 21:57:11

+0

我是懶得再))) – Nakilon 2011-01-28 22:19:01

10

另外,這樣做在一個正則表達式通:

error_messages = /I'm an error message!|Another error message/ 
if agent.page.body =~ error_messages 
    ... 
end 

你需要確保你逃脫包含的特殊字符任何錯誤消息。爲了使維護:

if agent.page.body =~ Regexp.union("foo", "bar", "jim.bob", "jam|jam") 
    ... 
end 

你應該只使用這個,如果你已經測試,發現Nakilon的答案的速度是不夠的,但是。 :)

相關問題