2012-05-29 42 views
1

我想知道如果我可以用黃瓜檢查某個特定字符串是否存在HTML文檔的頭部。 其實我對特定的機器人指令很感興趣,所以我在我的第一個步驟中啓動瀏覽器(atm Firefox)並打開本地站點。在黃瓜html-head中搜索von字符串

在第二步中,我檢查了整個HTML代碼的字符串:

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

,看到我的情況下未能在第二個步驟。 (預期屬實,有假) 令人驚訝的一個部分串的支票是succesfull:

@b.html.include?('name="robots"').should == true 

但只要我檢查

@b.html.include?('<meta name="robots"').should == true 

或只是

@b.html.include?('a name="robots"').should == true 

我得到再次假。

所以,我認爲whitespaces的存在會導致此行爲。 快速檢查,只有獎金空白

@b.html.include?(' name="robots"').should == true 

和testscenario是綠色的。

文檔主體

@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 請告訴我,我是否應該提供更多信息......我正在修補這些東西幾個小時。

編輯1:添加了我檢查的網站的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

你能提供你的網頁的HTML嗎?你還用什麼來驅動Firefox瀏覽器? –

+0

我已將HTML附加到我的問題。我正在使用watir-webdriver 0.5.8。 – micropaul

回答

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文件的順序不同。這解釋了爲什麼你的測試正在給出結果。

建議解決方案:

假設你只關心具體的meta標籤出現在標題(而不是特定的順序標籤寫的),我會建議使用:

b.head.meta(:name => 'robots', :content => 'noindex, follow').exists?.should == true 
+0

非常感謝。您建議的代碼段按預期工作。 – micropaul