2012-12-12 151 views
0

即使對於簡單的場景,我也無法使xpath與水豚一起工作。我有:水豚:找不到xpath

<div id="drawer-container" role="application" class="drawers-2"> 
<div class="drawer" id="drawer-1"> 
    <h2 role="tab" aria-controls="tabpanel-highlights"> 
    <a href="#" class="drawer-toggle" role="button"> 
     <span>Featured</span> 
     <span class="context blq-hide">section collapsed</span> 
    </a> 
    </h2> 

但是當我嘗試與水豚如下:

find(:xpath, "div[@id='drawer-1' and @class='drawer']").click 

然後失敗說:

Unable to find xpath "div[@id='drawer-1' and @class='drawer']" (Capybara::ElementNotFound) 

我看,這可能是由於webrat,但我沒有那個寶石。我的水豚版本是2.0.1

任何想法可能會導致此問題?

謝謝!

回答

0

xpath必須聲明從哪裏開始。您可能要定位的div標籤不管它是在文檔中,所以你應該以「//」開始的XPath:

find(:xpath, "//div[@id='drawer-1' and @class='drawer']").click 

注意的是,雖然上述的XPath將解決您的例外,可以不得到你想要的結果。你可能想點擊鏈接:

find(:xpath, "//div[@id='drawer-1' and @class='drawer']/h2/a").click 
+0

謝謝Justin,就是這樣! 但是,我注意到,如果我只是使用第一種方式(find.click),它不會單擊鏈接,但會通過該步驟。 任何想法,爲什麼這可能是? – mickael

+0

第一個說是點擊div,這是有效的。沒有與div的onClick事件綁定的動作,所以沒有什麼有趣的事情發生。你必須真的說你想點擊鏈接,因此第二個例子中的「/ h2/a」。 –

+0

啊哈,我明白了。再次感謝,瞭解如何將所有內容與您的幫助結合在一起! – mickael