2012-02-07 6 views
1

私はPHPUnitのとSeleniumを使用していて、現在、それはこの見つけたときに渡し$this->assertElementContainsText('id=foo', 'bar')のようなものを使用して:しかし<p id="foo">bar</p>PHPUnitをSeleniumで使用すると、要素に何かが含まれていることをどのようにテストできますか?

を、私もp#fooが他のHTMLが含まれている可能性がある場合をテストしようとしている、と私がしたいです内容がと正確に一致することをテストしてください。私の考えでは、それは$this->assertElementTextEquals('id=foo', '<a href="http://www.example.com/">bar</a>')のようになります。

PHPUnitとSeleniumでこれを実現する既存の方法はありますか?

答えて

5

Xpathを渡して、目的の要素をターゲットにすることができます。

$this->assertElementContainsText(
    "//p[@id='foo']/a[@href='http://www.example.com/']", 
    'bar' 
); 

基本クラスに以下を追加して、コンテンツの完全一致をテストすることができます。

/** 
* Asserts that an element contains exactly a given string. 
* 
* @param string $locator 
* @param string $text 
* @param string $message 
*/ 
public function assertElementTextEquals($locator, $text, $message = '') 
{ 
    $this->assertEquals($text, $this->getText($locator), $message); 
} 
+1

ありがとうございます。私はXpathを使用して終了し、それは素晴らしい動作しているようだ。 (Seleniumが与えられたロケータの完全なHTMLコンテンツを取得する方法を提供したいと思っていますが、見つけられないようです。) – shanebonham

関連する問題