1

HTMLドキュメントの先頭で、キュウリを含む特定の文字列が存在するかどうかを確認するにはどうすればよいでしょうか。実際、私は特定のロボットディレクティブに興味があるので、最初のステップでブラウザー(atm Firefox)を起動し、ローカルサイトを開きます。

2番目のステップでは、htmlコード全体で文字列を確認します。

@b.html.include?('<meta name="robots" content="noindex, follow">').should == true

そして、私のシナリオが2番目のステップで失敗するのを見てください。(trueが期待され、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の見出しをドキュメントの先頭に移動し(テストはまだ合格)、メタタグを本文に移動しようとしました(テストはまだ失敗しています)

私は、Firefoxでwatir-webdriverを介して駆動されるcucumber1.2.0とruby1.9.3p0を使用していて、何か間違ったことをしているのではないかと思っています。実際、私には、この簡単な手順と、メタデータとこの1つの「Yarr」文を含む最小限のhtmlサイトを備えた機能が1つだけあります。レールもレーキもありません。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>
4

1 に答える 1

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
于 2012-05-31T20:58:08.657 に答える