symfony – sfDomCssSelector のセレクタの書式

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