我想知道如何检查HTML文档的头部是否存在带有黄瓜的特定字符串。实际上,我对特定的机器人指令很感兴趣,所以我在第一步启动一个浏览器(atm )并打开一个本地站点。
在第二步中,我检查了字符串的整个html代码:
@b.html.include?('<meta name="robots" content="noindex, follow">').should == true看到我的场景在第二步失败了。(预期为true,got false)令人惊讶的是,对部分字符串的检查是成功的:
@b.html.include?('name="robots"').should == true但一旦我查到
@b.html.include?('<meta name="robots"').should == true或者只是
@b.html.include?('a name="robots"').should == true我又搞错了。
所以,我认为白空间的存在导致了这种行为。只使用额外空格的快速检查
@b.html.include?(' name="robots"').should == true测试结果是绿色的。
在文档正文中搜索整个句子
@b.html.include?('<h1>Yarr, that "is" supeb!</h1>').should == true也在流逝。
我还尝试将h1标题移到文档的头部(测试仍在传递),并将元标记移动到正文(测试仍然失败)。
我在用watir-webdriver驱动的Firefox使用黄瓜1.2.0和ruby 1.9.3p0,并怀疑我是否做错了什么。实际上,我只有一个功能与这个简单的步骤和一个最小的html-站点与元数据和这个"Yarr“句子。没有栏杆,没有耙。OSX10.7请告诉我是否应该提供更多的信息…我花了好几个小时摆弄这些东西。
Edit1:添加了我检查的站点的HTML。
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
<meta charset="utf-8">
<link rel="stylesheet" media="screen" href="/public/stylesheets/main.css">
<link rel="shortcut icon" type="image/png" href="/public/images/favicon.png">
<script src="/public/javascripts/jquery-1.6.4.min.js" type="text/javascript" charset="utf-8"></script>
<link rel="canonical" href="google.de">
<meta name="robots" content="noindex, follow">
</head>
<body>
<h1>Yarr, that "ist" superb!</h1>
</body>
</html>发布于 2012-05-31 20:58:08
问题:
似乎HTML标记的属性并不总是按照编写它们的顺序排列。见此:
puts @b.html
#=> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Home</title>
<meta charset="utf-8" />
<link href="/public/stylesheets/main.css" media="screen" rel="stylesheet" />
<link href="/public/images/favicon.png" type="image/png" rel="shortcut icon" />
<script charset="utf-8" type="text/javascript" src="/public/javascripts/jquery-1.6.4.min.js"></script>
<link href="google.de" rel="canonical" />
<meta content="noindex, follow" name="robots" />
</head>
<body>
<h1>Yarr, that "ist" superb!</h1>
</body></html>请注意,<meta content="noindex, follow" name="robots" />与您的HTML的顺序不同。这就解释了为什么你的测试会给出结果。
建议解决方案:
假设您只关心特定的元标记出现在标头中(而不是标记写入的特定顺序),我建议使用:
b.head.meta(:name => 'robots', :content => 'noindex, follow').exists?.should == truehttps://stackoverflow.com/questions/10807046
复制相似问题