你能帮我为检查 CSS 属性创建一个正确的 RSpec 期望吗?
例如我有:
<td class="MenuItem">
并且MenuItem有一个属性“背景颜色:#c0c0c0 ”。
我需要检查background-color是否等于#c0c0c0。
我的例子:
expect(page.td_element(:class => "MenuItem").attribute(class).MenuItem).to be == "#c0c0c0"
你能帮我为检查 CSS 属性创建一个正确的 RSpec 期望吗?
例如我有:
<td class="MenuItem">
并且MenuItem有一个属性“背景颜色:#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
方法并指定我们感兴趣的特定属性,在本例中为“背景颜色”:
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)')