测试div在rspec/capybara中是否具有某种css样式?

Nar*_*tor 3 ruby-on-rails capybara

不重复: 你如何测试div在rspec/capybara中是否具有某种css风格?

因为那些答案对我的案子不起作用.

我有一个带预览的webform; 当您更改Web表单的某些部分时,预览会更新,我想在我的测试中检查这一点 - 所以我确实需要检查应用于div的样式.具体来说,我正在更新background-color某些div,我想检查这是否已经发生.

有任何想法吗?

Jus*_* Ko 8

据我所知,Capybara没有用于获取元素的计算样式的API.但是,由于您使用的是Selenium-Webdriver,因此可以下拉到Selenium元素并使用该style方法.

例如,考虑以下页面有一个div元素,其样式通过javascript更新:

<html>
  <body>
    <div id="red_div">
      background applied by javascript
    </div>
    <script>
      document.getElementById("red_div").style.background = "red";
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以使用底层Selenium元素的style(或css_value)方法获取div的计算样式:

red_div = page.find(:css, '#red_div')
puts red_div.native.style('background-color')
#=> "rgba(255, 0, 0, 1)"
Run Code Online (Sandbox Code Playgroud)

注意:

  • native 是获取Capybara节点的底层Selenium元素的方法.
  • 您获得的价值style可能因浏览器而异.例如,对于背景颜色,我相信IE实际上会给你"红色".