2014-01-30 45 views
0

我在裏面有很多'h2'元素'a'。 我想要的只是讓所有的「A」中的「H2」phpunit selenium2 - 選擇多個元素

當我嘗試這樣的事:

public function testBreakingNewsH2(){ 

    $this->url('index.php'); 

    $h2Elements = $this->byCssSelector('h2')->byCssSelector('a')->text(); 
    $this->assertEquals('Breaking News', $h2Elements); 
} 

我只得到了第一個「一」內部「H2」。 我需要檢查所有的 'H2' 鏈接存在(得到所有 'H2' 元素包含 'A') 我想是這樣的:)

公共職能testHomePgaeH2({

$this->url('index.php'); 
    $h2Elements = $this->elements($this->using('css selector')->value('h2')); 

    $this->assertContains('Breaking News', $h2Elements); 
    $this->assertContains('Analysis', $h2Elements); 
    $this->assertContains('Calendar', $h2Elements); 
    $this->assertContains('Studies', $h2Elements); 

}

這不行,這是我發現我的問題的最好例子。當然 我可以嘗試這樣的事:

$this->assrtRegExp('/xxxx/i', $this->source()); 

,但我想使它儘可能乾淨不把所有的源。

請指教, 謝謝。

回答

1

您可以通過CSS選擇器獲取的元素列表與此代碼:

$elements = $this->elements($this->using('css selector')->value('h2 a')); 
foreach ($elements as $i=>$element){ 
    echo $element->text() . "\n"; 
} 

如果要檢查所有h2包含a,你可以找到CSS選擇h2的所有元素,並指望他們再通過找h2 a並重新計數。然後比較。你也可以遍歷所有h2 a元素,並通過數組或正則表達式檢查他們的URL。這取決於你想要什麼。

+0

謝謝。也許你知道如何檢查特定的鏈接名稱與assertContains例如我想檢查「突發新聞」是在我的網站h2內的鏈接。問題是如果我把assertEqual放到foreach中就會失敗。當我嘗試'$ this-> assertContains('Breaking News',$ h2Elements); '它說:無法斷言數組包含'突發新聞' – Dennis

+0

製作一個數組:$ titles [] = $ element-> text(); (在foreach中),然後執行$ this-> assertContains('Breaking News',$ titles); – rNix

+1

謝謝,我真是太神奇了,我忘了我可以使用普通的php。 – Dennis