2016-11-28 63 views
0

我剛剛開始使用SitePrism,並且我有一個網站,其中的元素被動態添加到頁面中,並且沒有任何種類的ID,名稱等等......我能想到的最簡單的方法是通過它們找到它們'文本',例如。繼續按鈕是否可以用SitePrism點擊第N個元素?

我嘗試:

element :continue_b, :button, 'Continue' 

和SitePrism失敗與以下:

Capybara::Ambiguous: Ambiguous match, found 4 elements matching button "Continue" 

有沒有辦法對我來說,指定與SitePrism我想點擊的元素?我發現有幾種方法可以與水豚本身一起使用,但我沒有設法查看SitePrism的等價物。

回答

0

如果真的有任何按鈕元素之間沒有區別,你不能/不想動element定義頁面的作用域section,您可以使用match參數只返回第一。由於SitePrism元素名之後的所有參數是通過傳遞到水豚爲找到論據這將是

element :continue_b, :button, 'Continue', match: :first 
+0

我只是想和得到了錯誤: 「硒:: webdriver的::錯誤:: ElementNotVisibleError:元素不可見'。雖然元素是可見的! 看來,4個元素中的3個被報告爲不明確的是隱藏的(第一個是其中之一)。我本來期望SitePrism/Capybara嘗試點擊唯一可見的元素,但似乎並非如此。有沒有一種命令或方法來指定只關心可見元素?我試過了: 'element:continue_b,:button,'Continue',visible::true'但這並不奏效。 – mickael

+0

奇怪的是,我得到默認的模糊消息,然後如果我使用'\t Capybara.ignore_hidden_​​elements = true'我得到這個呢?!水豚:: ElementNotFound:無法找到按鈕「繼續」 – mickael

+0

@mickael首先,使用Capybara.ignore_hidden_​​elements = false通常是一個壞主意,當測試一個應用程序。其次,當你調用'continue_b'時,它聽起來像所有的按鈕都被隱藏了。 SitePrism禁用Capybaras自動等待行爲,所以它不會等待元素變爲可見。您可以重新配置SitePrism以啓用Capybaras隱式等待 - https://github.com/natritmeyer/site_prism#siteprism-configuration - 或者您需要調用「wait_until_button_b_visible」 - https://github.com/natritmeyer/site_prism#waiting要成爲可見的 –

相關問題