object sfTestBrowser::checkResponseElement(string $selector [, mixed $value [, array $options]])
にも使われる、
array sfDomCssSelector::getTexts(string $selector)
の引数の文法について、symfony のドキュメントであまり触れられていないようなので、簡単にまとめてみました。
■基本要素(DOM Element)
<タグ名>
例: body タグの中身(<body>〜</body>)を取得する
$cssSelector->getTexts(“body”)
■属性指定要素
<タグ名>[<属性名1>=”<値1>“][<属性名2>=”<値2>“][…]
例: id が foo の div タグの中身(<div id=”foo”>〜</div>)を取得する
$cssSelector->getTexts(‘div[id=”foo”]’)
■要素の階層構造
<要素1> <要素2> <要素3> …
例1: (より正確に)ページタイトルを取得する
$cssSelector->getTexts(‘html head title’)
例2: フォームの投稿ボタンが「送信」という表示になっているか確かめる
$texts = $cssSelector->getTexts(‘form input[type=”submit”][value=”送信”]’);
if(count($texts) > 0){
echo “フォーム中に <input type=”submit” value=”送信”> が存在します\n”;
}
ちなみに、sfTestBrowser::checkResponseElement() の第二引数を省略、あるいは bool 値にした場合はこの例のように存在の有無をテストします。
追記:
(2007-08-30) symfony WiKi にもセレクタの書式が書かれていました。
lime functional testing hints