2016-11-28 48 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要成为可见的 –