2016-05-20 105 views
0

我想創建一個for循環以從watir中獲取幾個lis的文本。用Watir Webdriver選擇「ol」html標籤

這裏的是HTML我想湊

<ol class="shared-connections"> 
<li class="small-result"> 
    <a class="img-link" href="http://www.google.com"></a>  
</li> 
<li class="small-result"> 
    <a class="img-link" href="http://www.google.com"></a>  
</li> 
</ol> 

我特林得到與循環鏈接href值,但我不能讓循環啓動與此代碼:

@browser.ol(class: "shared-connections").lis(class: "small-result").each do |connection| 
p "is this working?" 
end 

的 「OL」 標籤防止工作循環,給了我這個錯誤:

/Library/Ruby/Gems/2.0.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/elements/element.rb:536:in `assert_element_found': unable to locate element, using {:class=>"shared-connections", :tag_name=>"ol"} (Watir::Exception::UnknownObjectException) 

任何想法如何牛逼o「ol」與Watir合作?謝謝!

+0

'ol'標籤做工精細在Watir。該錯誤表示它無法找到「shared-connections」類的ol標籤。確認您位於正確的頁面上,而不是在iframe中。 – titusfortner

+0

在這種情況下,您可以使用'#exists?'和'#visible?'來幫助縮小問題的範圍。 – meatspace

回答

0

看來你沒有通過代碼打開適當的頁面。

代碼運行良好。我創建的文件與代碼,你在IRB提供

pp File.readlines('a.html')

["<ol class=\"shared-connections\">",  
" <li class=\"small-result\">,  
" <a class=\"img-link\" href=\"http://www.google.com\"></a>,  
" </li>",  
" <li class=\"small-result\">,  
" <a class=\"img-link\" href=\"http://www.google.com\"></a>",   
" </li>",  
"</ol>"] 

然後

b = Watir::Browser.new :chrome 
b.goto 'file://' + Dir.pwd + '/a.html' 

b.ol(class: "shared-connections").lis(class: "small-result").each do |connection| 
    p "is this working?" 
end 
"is this working?" 
"is this working?" 
=> [#<Watir::LI:0x604055b6f2097db6 located=false selector={element: (webdriver element)}>, #<Watir::LI:0x..f5826cdc74313e1a located=false selector={element: (webdriver element)}>] 

可以確保這個與@browser.html