我想知道如果我可以检查HTML文档的头部是否存在特定的黄瓜字符串。 实际上我对特定的机器人指令感兴趣,所以我在第一步中启动浏览器(atm Firefox)并打开一个本地站点。
在第二步中,我检查整个html代码中的字符串:
@b.html.include?('<meta name="robots" content="noindex, follow">').should == true
看到我的情景在第二步失败了。 (预期为真,变假) 令人惊讶的是,检查部分字符串是成功的:
@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标题移动到文档的头部(测试仍然通过)并将元标记移动到正文中(测试仍然失败)
我正在使用黄瓜1.2.0和ruby 1.9.3p0与Firefox驱动通过watir-webdriver并想知道我是否做错了什么。 实际上我只有一个功能,这个简单的步骤和一个最小的html网站与元数据和这一个“Yarr”句子。没有铁轨,没有耙子。 OS X 10.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>
答案 0 :(得分:2)
问题:
似乎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 == true