2011-12-01 101 views
2

我正在使用Rspec和水豚。點擊圖片使用RSpec&水豚

我正在嘗試點擊圖片,但無法找到一種方法讓水豚點擊圖片。我不知道該怎麼做,因爲我實際上有同樣的課程,alt和src。

感謝

示例HTML的

<tr class="even"> 
    <td class="gridData" style="text-align:center;"> 
    <td class="gridData"> 221 </td> 
    <td class="gridData" route="default" reset="0" urlparams="users index edit {userID}" label="Username"> 
    <td class="gridData"> 
    <img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png"> 
    </td> 
</tr> 

<tr class="odd"> 
    <td class="gridData" style="text-align:center;"> 
    <td class="gridData"> 222 </td> 
    <td class="gridData" route="default" reset="0" urlparams="users index edit {userID}" label="Username"> 
    <td class="gridData"> 
    <img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png"> 

其實這是源,我想測試:

<img class="user-info-grid" alt="info" src="/themes/system/images/icon/16/information.png"> 

但正如我所說的,我不能找到一種方法,得到Capybara點擊圖像。

任何想法?

+1

此外,您的HTML沒有很好地形成。表格行中沒有圖像。該代碼將使所有瀏覽器以怪癖模式呈現。你應該讓自己熟悉HTML的基礎知識。 – Matthias

+0

這是一個打開js彈出窗口的圖像 –

+1

很酷,但是這並不能改變標準不允許在'tr'(表格行)中擁有'img'的事實:-) – Matthias

回答

0

這是因爲您的圖片是圖片,而不是鏈接。它包裝到一個鏈接裏面,然後再點擊鏈接,就像這樣:

<a href="..." id="my_link"><img ... /></a> 
+0

它不起作用。沒有鏈接,你是對的...這是基於js的彈出窗口,我想通過點擊打開它 –

+0

我對水豚知之甚少,但我會假設如果您要求它在頁面上找到鏈接,它會查找HTML錨點。而且,Capybara中的默認驅動程序完全無視您網頁上的任何JavaScript形式。看看例如Selenium驅動程序,它能夠處理動態頁面元素。 – Matthias

0

難道我理解正確的話,有沒有<a>元素,因爲你使用JavaScript onclick處理?如果是這樣,那麼你需要知道,普通的Capybara不會做JavaScript。您需要使用capybara-webkit,Selenium或其他類似的東西。

但我建議你把<a>元素,並應用JS處理程序。這將使沒有JavaScript的用戶代理更容易處理(是的,還有一些!)。

馬蒂亞斯是正確的:讓你的HTML有效。

9

幫助,您可以使用尋找一個ID時:

find("#the_id").click 

或者一類

find(".the_class").click 
+0

這對我有效。清潔和簡單。謝謝! **更正**當OP尋找一個'class'解決方案時,我發現這是爲了尋找一個'id'解決方案。看起來像suresh.g的答案更符合OP。同時調高。 – dooleyo

+0

您應該可以通過用「。」替換「#」來搜索課程。例如:find(「。the_class」),點擊 – Antoine

12

您可以使用此:

page.first(".user-info-grid").click 

這是用來找到用戶信息網格類和應用點擊功能。

如果多個類都帶有這個名稱,那麼點擊將在第一個找到的類中執行。

0

我把這個和作品:

find("img[src*='myphoto.jpg']").click