【问题标题】:How to select from multiple CSS selectors with Capybara如何使用 Capybara 从多个 CSS 选择器中进行选择
【发布时间】:2012-08-16 00:31:45
【问题描述】:

使用 RSpec 和 Capybara 测试 div 中是否存在具有类 'foo' 的元素。

<div class="foo">
  <p>Text zzz</p>
  Looking for element here
</div>
<div class="foo">
  <p>Text aaa</p>
  Element should not exist within this div.
</div>

页面上有很多类 'foo' 的 div,我可以根据 foo 在数据库中的 ID 给它们不同的 ID。

但我不知道测试中 foo 的 ID。而且,我不想测试 div 的父级,因为一个元素应该出现在一个 div 中,而在另一个 div 中不存在。

在这种情况下测试元素的最佳方法是什么?

【问题讨论】:

  • 从您提出问题的方式来看,无法确定内容应该在哪个元素中。你说你在测试环境中没有 foo 的 id,但是你有什么?

标签: ruby-on-rails rspec capybara bdd


【解决方案1】:

如果我正确理解了这个问题(而且我不是 100% 有把握),我认为这应该可行:

el1 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text zzz")]]')
el2 = find(:xpath, '//div[@class="foo"][./p[contains(.,"Text aaa")]]')

使用 css 而不是 xpath 可能有一种更简单的方法来执行此操作,但我发现这适用于这种情况。 (注意:我还没有实际测试过这段代码。)

【讨论】:

    【解决方案2】:
    parent = find("p[text()='zzz']").find(:xpath,"..")
    within parent do
      ...
    

    https://github.com/jnicklas/capybara/pull/505

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多