【问题标题】:Capybara can't find button to click by xpath or text, button does not have id or nameCapybara 找不到通过 xpath 或文本单击的按钮,按钮没有 id 或名称
【发布时间】:2017-07-12 14:50:29
【问题描述】:

我正在测试这个页面,我必须填写一个表格,并且只有当所有字段都填写并有效时,才能点击按钮,但是,当试图找到要点击的按钮时,我总是收到水豚的消息无法找到按钮或元素,或者我尝试找到它。 该按钮没有名称或 ID,这使其更难。

screenshot of the part of the code while inspecting element

<button class="btn btn--highlight _159vaYHuibqRdI3OZTALCW">
<!-- react-text: 182 -->
Jetzt kaufen
<!-- /react-text -->
<!-- react-text: 183 --> — <!-- /react-text -->
<!-- react-text: 184 -->
94,01&nbsp;€
<!-- /react-text -->
<span class="spinner">
</span></button>

当浏览器的大小改变时,按钮文本会改变,但是默认大小的按钮文本是“Jetzt bestellen”,当更大时“Jetzt kaufen” 我已经尝试点击此按钮的方式:

@browser.click_button('Jetzt bestellen', 等待:10)

@browser.within ".btn btn--highlight" 做 @browser.click_on "Jetzt bestellen" 结束

@browser.find_button('Jetzt bestellen', 等待:10).click

@browser.find(:xpath, '//button[text()="Jetzt bestellen"]', 等待:10).click

【问题讨论】:

  • 您是否将Capybara.exact 设置为true?如果不是,按钮是否在当前范围之外(即您是否在不包含按钮的 inside 块内)。注意:click_button 被实现为find_button(args...).click,因此您的第三次尝试与第一次没有什么不同也就不足为奇了。您的第四次尝试不起作用,因为按钮的内容不仅仅是“Jetzt bestellen”。请在您的问题中添加您收到的确切错误消息。
  • gist.github.com/twalpole/14cd6c69c91b3d54cf2bd994375a019b 是一个要点,将您显示的 html 放入文档中,然后显示水豚找到点击它。当您的测试运行时,您确定文本是“Jetzt bestellen”吗?而不是您在 html 中显示的“Jetzt kaufen”?你可以试试click_button('Jetzt') 看看是否通过。

标签: ruby selenium capybara


【解决方案1】:

这就是我在测试 Angular 应用程序时解决此问题的方法。

@browser.find('button', text: 'Jetzt bestellen').click

如果链接和按钮上没有href,一些水豚查找器就不会像有href时那样工作。

【讨论】:

  • 在 Capybara 中的链接确实需要 'href' 属性,或者让您为 click_link 指定 href: nil 选项。这是因为 html 规范说如果它没有 href 就不是链接 - 只是一个链接占位符。 button 元素虽然在 Capybara 中没有任何此类要求(只是它们没有被禁用)
猜你喜欢
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多