水豚找到 aria-pressed 的元素值

Capybara find element value of aria-pressed

我想在水豚中为以下代码获取 aria-pressed 的值:

<button aria-pressed="true" class="btn btn-default active" data-active="true" data-toggle="button" id="grid-filter-invited-button" type="button">
  Invited
</button>

这是一个按钮...当我点击它时,它的 aria-pressed 值在 true 和 false 之间切换。我想要 "aria-pressed" 的值。有人可以帮忙吗?

节点有一个 [] 方法 returns 属性值。

capybara_element['attribute_name'] 允许访问 Capybara

中的元素属性
aria-pressed = page.find('button#grid-filter-invited-button')['aria-pressed']
puts aria-pressed
#=> "true"

Reading an element's attributes with Capybara

我假设您想检查该值是否已更改。您应该能够使用 xpath 表达式断言这一点。由于它是一个布尔值,您可以通过检查结果是 nilempty.

来获得一个值

类似于:

page.all(
  :xpath,
  "//button[@id='grid-filter-invited-button'][@aria-pressed='true']"
)

或者期望它被按下:

expect(page).to have_selector(
  :xpath,
  "//button[@id='grid-filter-invited-button'][@aria-pressed='true']"
)

另外,看看这个对类似问题的回答。您也可以使用 css 选择器来实现:RSpec + Capybara: How do I test a Bootstrap progress bar