2014-01-30 8 views
0

У меня есть много элементов «h2» с «а» внутри. Все, что я хочу просто получить все «а» в «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», который содержит «а») я пытался что-то вроде этого:

общественная функция 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); 'он говорит: Не удалось утверждать, что массив содержит 'Breaking News' – Dennis

+0

Сделать массив: $ titles [] = $ element-> text(); (в foreach), затем выполните $ this-> assertContains («Breaking News», $ titles); – rNix

+1

спасибо, я так глупо это потрясающе, я забыл, что могу использовать обычный php. – Dennis

Смежные вопросы