模糊匹配,找到10个匹配xpath的元素“// html / body / div / div / div [3] / div [2] / div / div / div / a [2]”(Capybara :: Ambiguous)

时间:2012-11-22 01:47:59

标签: ruby cucumber capybara

我的项目工作正常之前我更新宝石现在它开始给我一些xpath的错误

3 个答案:

答案 0 :(得分:6)

我猜“更新宝石”,你将Capybara升级到2.0。这需要更具体的匹配,如Jonas Nicklas在announcement中所述:

  

当通过诸如click_linkfill_in之类的方法查找元素并与元素交互时,如果有多个匹配的元素,之前Capybara会尝试猜测你的意思。从现在开始,Capybara将提出异常。例如,如果您有两个名为“密码”和“密码确认”的字段,则fill_in "Password", :with => "test"将引发异常。

简单的解决方案是通过使用CSS类/ ID或更具体的XPath而不是文本标签来使您的选择器more specific

答案 1 :(得分:1)

// html / body / div / div / div [3] / div [2] / div / div / div / a [2]是你通常使用firebug得到的非常差的xpath。这是总共10个非常脆弱的正斜线。确实,开发人员有时会遗漏ID(并随机使用css类),但如果是这种情况,我建议他们让ID输入。

这将使你从

开始
//html/body/div/div/div[3]/div[2]/div/div/div/a[2] 

//a[@id='id_2']

要容易得多,但需要与开发人员密切合作

我的建议是阅读以下文章:http://www.w3schools.com/xpath/xpath_syntax.asp

答案 2 :(得分:0)

例如:给定属性

          

Cucumber / capybara使用标签,因此更改其中一个标签的客户名称;


  

<%= f.label:password_confirmation,“确认”%>

  <%= f.password_field:password_confirmation%>