2016-09-16 83 views
0

我想要一個簡單的菜單欄圖標點擊。但是,id和class不可用。我用page.execute_script()嘗試過。UI反應水豚按鈕點擊測試

HTML代碼

<button tabindex="0" type="button" style="border: 10px; box-sizing: border-box; display: inline-block; font-family: Roboto, sans-serif; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); cursor: pointer; text-decoration: none; margin: 0px; padding: 0px; outline: none; font-size: 14px; font-weight: 500; transform: translate(0px, 0px); color: white; width: 16.6667%; text-transform: uppercase; background-color: rgb(63, 174, 73);"> 
    <div> 
    <div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 48px;"> 
     <!-- react-text: 57 -->Type<!-- /react-text --> 
    </div> 
    </div> 
</button> 

水豚代碼

script = "document.getElementsByClassName('button')[0].click();" 
page.execute_script(script) 
+0

你想解決什麼問題?我們怎麼能幫你? – mrzasa

+0

我的目標是點擊按鈕。例子是'find(#some_id或.someclass).click'。但是,這些標籤中不可用。 – khoamle

回答

1

如果它是具有tabIndex唯一的按鈕= 「0」,你可以做

find('button[tabindex="0"]').click() 

如果你能拿出一個css或xpath表達式來選擇按鈕(並且它在頁面上是可見的),你可以在不使用execute_script的情況下點擊它(你最好關閉不使用execute_script,因爲這些事件更接近用戶將生成的內容)。另一種選擇是,如果按鈕是包含在可識別元素內的唯一按鈕,則可以將查找範圍限定爲可識別元素。

find('form#my_form').find('button').click() 

,或者如果它是第一個按鈕在一節

find('form#my_form').all('button')[0].click() 

,或者如果它只是在頁面上的第一個按鈕,你從一個頁面來沒有按鈕

all('button', minimum: 1)[0].click() 

你的execute_script不起作用,因爲你按類名搜索,但根據你的html按鈕沒有任何類屬性集。無論如何,如果可能的話,你總是會更好地使用Capybara不使用execute_script,因爲execute_script沒有與之相關的等待或重試行爲,並且快捷方式有多個確認可以實際執行您想要測試的動作的檢查。