2014-12-29 39 views
1

要找到與兩個連續的空格的Watir無法找到字符串以兩個連續的空格

串像頁http://notepad.cc/manele85

字符串「谷歌」有「O」和「G」

之間連續兩個空格

我的代碼:

require 'rubygems' 
require 'watir' 
require 'watir-webdriver' 

b = Watir::Browser.new :firefox 

b.goto "http://notepad.cc/manele85" 
puts b.div(:text => "Goo gle").text 

輸出:

unable to locate element, using {:text=>"Goo gle", :tag_name=>"div"} (Watir::Exception::UnknownObjectException) 

任何人都可以幫忙嗎?

謝謝

回答

0

當通過文本定位元素時,Watir規範化空間。如果設置$DEBUG爲true,你可以看到的Watir是創建以下XPath的b.div(:text => "Goo gle")

.//div[normalize-space()='Goo gle'] 

因爲normalize-space的,會的Watir治療多發性連續的空格爲一個空格。

結果,定位的元素時,你應該刪除在定位器的連續的空格:

b.div(:text => "Goo gle").exists? 
#=> true 

b.div(:text => "Goo gle").text 
#=> "Goo gle" 

如果你想使用多個空格來定位元素,你將獲得一個元素收集和檢查文本值:

div = b.divs.find { |div| div.text == 'Goo gle' } 
div.text 
#=> "Goo gle" 
+0

嗨,賈斯汀,它的工作原理!並想更多地瞭解這一點:爲什麼Watir規範化空間?有沒有辦法關閉它? – DarWcy

+0

由於瀏覽器通常將多個連續空格顯示爲一個空格,因此我猜Watir會規範化空格。沒有辦法關閉規範化(除了猴子補丁)。但是,您可以使用'find'創建自定義定位器(例如添加回答)。 –

相關問題