我的项目在我更新 gems 之前运行良好,现在它开始给我一些 xpaths 的错误
3 回答
我猜通过“更新宝石”,您将 Capybara 升级到 2.0。这需要更具体的匹配,如Jonas Nicklas的公告中所述:
click_link
当通过和等方法查找元素并与之交互时fill_in
,如果匹配的元素不止一个,之前 Capybara 会尝试猜测您指的是哪一个。从现在开始,Capybara 将改为引发异常。例如,如果您有两个名为“密码”和“密码确认”的字段,fill_in "Password", :with => "test"
则会引发异常。
简单的解决方案是通过使用 CSS 类/ID 或更具体的 XPath 而不是文本标签来使您的选择器更具体。
//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
例如:给定属性
Cucumber/capybara 使用标签,因此像这样更改其中一个标签的客户名称;
<%= f.label :password_confirmation, "确认" %>
<%= f.password_field :password_confirmation %>