使用Cucumber在html-head中搜索von字符串

时间:2012-05-29 21:35:52

标签: cucumber watir meta-tags watir-webdriver

我想知道如果我可以检查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>

1 个答案:

答案 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