我想检查整个网站的<img>
图片的alt
文字。我希望得到一份报告:alt
文字或alt
中的内容是否定义在每个页面的整个网站上使用的所有图片中。
是否可以获得这样的报告?获得报告后,我会将alt
或alt
添加为空白,然后写入说明文字。
否则,在一个大型网站上,需要花费大量时间去检查每一页。
网站位于Intranet上,可通过用户名和密码访问。
答案 0 :(得分:0)
这不是一个直接的答案,但是因为看起来你的动机就是知道哪些img
元素没有alt属性,所以我想补充一点 all img
元素需要alt属性。
HTML5 spec提及哪些img
元素应具有alt属性:
img元素代表什么取决于src属性和alt属性。
如果设置了src属性并且alt属性设置为空字符串
- 图像可以是装饰性的,也可以是其他内容的补充,与文档中的其他信息一样多余。
- 如果图像可用且用户代理配置为显示该图像,则该元素表示由src属性指定的图像。
- 否则,元素表示什么,可以从渲染中完全省略。用户代理可以向用户提供图像存在但已从渲染中省略的通知。
如果设置了src属性并且alt属性设置为非空值
- 图像是内容的关键部分; alt属性为图像提供文本等效或替换。
- 如果图像可用且用户代理配置为显示该图像,则该元素表示由src属性指定的图像。
- 否则,元素表示alt属性给出的文本。用户代理可以向用户提供图像存在但已从渲染中省略的通知。
如果设置了src属性且alt属性不是
- 图像可能是内容的关键部分,并且没有可用图像的文本等效项。
- 注意:在符合要求的文档中,缺少alt属性表示图像是内容的关键部分,但在生成图像时图像的文本替换不可用。
- 如果图像可用,则元素表示由src属性指定的图像。
如果未设置src属性且alt属性设置为空字符串或alt属性未设置
- 元素代表什么。
否则
- 元素表示alt属性给出的文本。
答案 1 :(得分:0)
如果你想用Selenium做这件事,那就是这样的
Dictionary<string,string> details = new Dictionary<string,string>();
int imgcount = selenium.GetXpathCount("//img");
for (i=0;i<10;i++){
details.add(selenium.GetAttribute("//img[i]@src"),selenium.GetAttribute("//img[i]@alt"));
}
foreach (KeyValuePair<string, string> kvp in details)
{
Console.WriteLine("key " + kvp.Key);
Console.WriteLine("Value " + kvp.Value);
}
这将打印图像的src及其ALT文本。
答案 2 :(得分:0)
使用TestPlan我提出了这个快速脚本:
GotoURL http://stackoverflow.com/questions/2570421/how-to-generate-a-report-for-particular-xhtml-tag-attributes
foreach %Image% in (response //img)
set %src% as combineCurrentURL (selectIn %Image% @src)
set %alt% as trim (selectIn %Image% @alt)
if numComp 0 = (length %alt%)
Notice %src% ALT IS EMPTY
else
Notice %src% : %alt%
end
end
输出如下所示(如果需要,也可以生成CSV报告)
00000001-00 NOTICE http://sstatic.net/so/img/logo.png : Stack Overflow
00000002-00 NOTICE http://ads.stackoverflow.com/ads/ladywhobig.jpg ALT IS EMPTY
00000003-00 NOTICE http://sstatic.net/so/img/vote-arrow-up.png : vote up
00000004-00 NOTICE http://sstatic.net/so/img/vote-arrow-down.png : vote down
这适用于HTMLUnit和Selenium后端到TestPlan。