Capybara选择器的跨度

时间:2015-07-23 20:47:30

标签: html ruby-on-rails xpath rspec capybara

您好我一直在苦苦挣扎应该是简单的选择与水豚。这就是我在页面上的内容:

<a title="Activity" class="" href="/changes">Activity <span class="badge">1</span></a>

我需要声明活动span.badge标记内有1a

在我发布之前,打印页面内容并做了save_and_open_page,这个内容就在那里。

这是我试过的(看起来最有希望甚至找不到标签):

find(:xpath, "//a[contains(.,'Activity')]")
find(:xpath, "//a[contains(@title, \"Activity\")]")
find(:xpath, "//a[@title='Activity']")
find(:xpath, "//a", :text => /reActivity /i)

还有很多其他值得一提的东西,你会怎么做?

问题更新:

我忘了提到这个html实际上最初隐藏在页面上,因为它是子菜单的一部分。所以添加Capybara.ignore_hidden_elements = false有效,但是将这个全局配置添加到您的测试中,还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确

//a[@title="Activity" and span[@class="badge" and . = 1]]

答案 1 :(得分:0)

如果我理解你要做什么,可以使用css选择器,这比XPath更容易阅读

find('a[title=Activity] span.badge', text: '1', visible: :all)

假设元素在页面上可见,应该找到你想要的东西。如果在工作中使用类似于以下的RSpec

,则断言
expect(page).to have_css('a[title=Activity] span.badge', text: '1', visible: :all)