ruby - RSpec 期望检查 CSS 属性

标签 ruby watir watir-webdriver page-object-gem rspec-expectations

你能帮我创建一个正确的 RSpec 期望来检查 CSS 属性吗?

例如我有:

<td class="MenuItem">

MenuItem 有一个属性“background-color: #c0c0c0”。

我需要检查 background-color 是否等于 #c0c0c0

我的例子:

expect(page.td_element(:class => "MenuItem").attribute(class).MenuItem).to be == "#c0c0c0"

最佳答案

在 Watir-Webdriver 中,Element#style方法可用于获取元素的计算样式。计算出的样式是基于样式表及其样式属性的元素外观。

假设 HTML 是这样的:

<html>
  <head>
    <style>
      .MenuItem { background-color: #c0c0c0; }
    </style>
  </head>
  <body>
    <table>
      <tr>
        <td class="MenuItem">menu</td>
      </tr>
    </table>
  </body>
</html>

我们可以调用 style 方法并指定我们感兴趣的特定属性,在本例中为“background-color”:

p browser.td(:class => "MenuItem").style('background-color')
#=> "rgba(192, 192, 192, 1)"

上面显示了 Firefox、Chrome 和 IE 返回的内容。其他浏览器可能会以不同方式格式化该属性。如您所见,我们得到了一个 RGBA 而不是原始的十六进制代码。虽然您可以编写算法将 RGBA 转换为十六进制代码,但测试 RGBA 代码更容易(因为返回的是它)。

就编写 RSpec 期望而言,我们只是比较一个字符串,所以可以这样做:

expect(browser.td(:class => "MenuItem").style('background-color')).to eq('rgba(192, 192, 192, 1)')

但是,鉴于您正在使用页面对象 gem,您将需要使用 cell_element 而不是 td:

expect(page.cell_element(:class => "MenuItem").style('background-color')).to eq('rgba(192, 192, 192, 1)')

关于ruby - RSpec 期望检查 CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528607/

相关文章:

ruby-on-rails - Ruby:如何根据可变数量在 Active Admin 面板中将单词复数/单数化(Active Admin,rails 3.2,ruby)

ruby - 不同 ruby​​ 文件中的可变范围

watir-webdriver - 执行 Browser.new :chrome 时出现 watir webdriver "no such session: title\n"消息

ruby - Watir-webdriver:为所有失败的场景获取相同的屏幕截图图像

ruby - 如何将 before_filter 应用于 Rails 3.2.11 中每个 Controller 的每个操作?

ruby - 使用单个应用程序监控多个 RabbitMq 订阅

javascript - Rails 获取请求无法使用 Angular 正常工作

ruby - Watir,通过自定义属性定位元素

webdriver - 静音 ChromeDriver.exe 日志记录

javascript - 使用 Watir 关闭 "Confirm Navigation"弹出窗口