2013-03-21 35 views
2

我有以下幾點:檢索span元素的文本中的Watir webdriver的

<ul class="a"> 
    <li class="b"> 
    <a class="c"> 
     <span class="d"> 
     <strong>text</strong> 
     </span> 
    </a> 
    </li> 
</ul> 

我想從跨度「文本」。

當我嘗試:

puts browser.ul(:class =>'a').li(:class =>'b').link(:class =>'c').span(:class =>'d') 

我得到的span元回來。 #<Watir::Span:0x007fa1d11edb18>我應該。

但是,試圖在:

puts browser.ul(:class =>'a').li(:class =>'b').link(:class =>'c').span(:class =>'d').text 

即時得到一個錯誤說:

unable to locate element, using {:class=>'b', :tag_name=>"li"} 

任何想法?

+3

基於html結構,我猜測它是一個下拉菜單。如果是這樣,您需要展開菜單,然後才能點擊任何鏈接(即Watir只能與用戶可見的元素進行交互)。 – 2013-03-21 16:21:44

回答

7

如果您可以指向問題可重現的頁面,這將有所幫助,即使這意味着您自己創建一個頁面,將其放入Dropbox並將其公開。

你甚至嘗試用你發佈的html和ruby代碼來複制問題嗎?我在問,因爲問題不能用所提供的代碼重現。看看自己:

> browser.ul(:class =>'a').li(:class =>'b').link(:class =>'c').span(:class =>'d') 
=> #<Watir::Span:0x..fa66c75ff618434cc located=false selector={:class=>"d", :tag_name=>"span"}> 

> browser.ul(:class =>'a').li(:class =>'b').link(:class =>'c').span(:class =>'d').text 
=> "text" 

據我瞭解,你感到吃驚的是,當你提供一些代碼的Watir返回元素,但是當你想要的元素上執行的方法,它抱怨能找不到元素。

再仔細看一下,表示在頁面上元素的Ruby對象:

#<Watir::Span:0x..fa66c75ff618434cc located=false selector={:class=>"d", :tag_name=>"span"}> 

請注意located=false。據我所知,這意味着watir在嘗試訪問它之前創建一個ruby對象,因此代碼的第一行不會引發任何異常。但是,當你嘗試使用該元素時,watir無法在頁面上找到並投訴。

+1

你是對的,我沒有意識到Watir在執行方法之前不會創建對象。 我的問題是,正如@Justin Ko所說,這是一個下拉菜單,我沒有等到它真的出現。 謝謝你的回答!它仍然教給我一些關於Watir的信息。 – MichaelR 2013-03-24 08:09:59

相關問題