gpt4 book ai didi

html - 如何测试网页上粗体文本的百分比?

转载 作者:可可西里 更新时间:2023-11-01 14:55:41 27 4
gpt4 key购买 nike

我有一个实例,我需要测试页面内容的样式(不一定只使用 CSS)。

比如我想写的一个测试( cucumber )是:

为了规范文本权重
作为站长
我想知道页面上粗体文本的百分比

问题是,我很难弄清楚如何实际生成此结果。查看各种 HTML 测试框架(Selenium、Watir、Capybara),似乎我只能测试标签的存在或 css 类的存在,而不是计算的视觉结果。

在 Firebug 中,我可以看到计算出的 CSS 结果(适用于 font-weight:bold 定义),但我需要能够将其放入进入在 CI 下运行的测试框架。

最佳答案

在 Watir 中,您可以通过直接访问 win32ole 对象来访问元素字体粗细。例如:

ie.div(:index, 1).document.currentStyle.fontWeight

这将为您提供代表重量的数字,如 http://www.w3schools.com/cssref/pr_font_weight.asp 中所述

我认为您接下来需要做的是遍历页面上的所有元素,检查其字体重量是多少以及元素中有多少文本。您执行此操作的方式取决于您正在测试的页面。

解决方案 1 - 如果所有文本都在作为叶节点的 div 中:

如果您的所有文本都在这样的叶节点中:

<body>
<div style='font-weight:bold'>Bold</div>
<div>Plain</div>
</body>

你可以轻松做到:

bold_text = 0
plain_text = 0
ie.divs.each{ |x|
if x.document.currentStyle.fontWeight >= 700
bold_text += x.text.length
else
plain_text += x.text.length
end
}

解决方案 2 - 如果样式交互或使用多个元素:

如果不是所有文本都在叶节点中,或者您使用其他标签,如 <b> (请参阅下面的示例 HTML),您需要进行更复杂的检查。这是由于 .text 返回元素中的所有文本,包括其子元素。

<body>
<div style='font-weight:normal'>
Start
<div style='font-weight:bold'>Bold1</div>
<div style='font-weight:bold'>Bold2</div>
End
</div>
<b>Bold Text</b>
</body>

在这种情况下,我相信以下适用于大多数情况(但可能需要改进):

#Counting letters, but you could easily change to words
bold_count = 0
plain_count = 0

#Check all elements, though you can change this to restrict to a particular containing element if desired.
node_list = ie.document.getElementsByTagName("*")

0.upto(node_list.length-1) do |i|
#Name the node so it is easier to work with.
node = node_list["#{i}"]

#Determine if the text for the current node is bold or not.
#Note that this works in IE. You might need to modify for other browsers.
if node.currentStyle.fontWeight >= 700
bold = true
else
bold = false
end

#Go through the childNodes. If the node is text, count it. Otherwise ignore.
node.childNodes.each do |child|
unless child.nodeValue.nil?
if bold
bold_count += child.nodeValue.length
else
plain_count += child.nodeValue.length
end
end
end

end

#Determine number of characters that are bold and not. These can be used to determine your percentage.
puts bold_count
puts plain_count

这不是一个非常像 Watir 的解决方案,但希望能解决您的问题。

关于html - 如何测试网页上粗体文本的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com