2016-08-02 6 views
0

Мне нужно проверить, сколько css-селекторов появляется на веб-сайте. Я geht только огромный массив с узлами, которые соответствуют моему состоянию. Когда я подсчет строк в пределах массива, я получаю «пять», но schould быть «три»Behat MinkExtension traversing, counting css-selectors

Моего кода:

/** 
* @Then /^I should see more then one css slider-selector "([^"]*)"$/ 
* @Then /^I should see more then one CSS slider-selector "([^"]*)"$/ 
*/ 
public function iShouldSeeMoreThenOneCssSliderSelector($css_selector) { 
    $nodes = $this->getSession()->getPage()->findAll("css", $css_selector); 

    $counter = 0; 
    foreach($nodes as $row){ 
     if(!empty($row)) {$counter +=1;} 
    } 
    if($counter<2){ 
     throw new \Exception(sprintf("The page '%s' does not contain enough pictures for slider '%s'", $this->getSession()->getCurrentUrl(), $css_selector)); 
    } 
} 

Но когда я смотрю на HTML-источнике, у меня есть только три матча. Этот код говорит, что у меня 5 мачт. Я думаю, я не правильно тестирую. Есть идеи?

ответ

2

Пожалуйста, проверьте один и тот же селектор вручную и отлаживайте сценарий, чтобы увидеть, произошло ли что-то еще, например, страница не загружена, она не перемещается по правой странице или что-то еще происходит, что влияет на результат.

Для подсчета найденных элементов вы можете использовать метод count() вместо цикла foreach.

$counter = count($nodes); 
+0

О, я очень сожалею. Я выглядел вручную в исходном коде в полном исходном файле, и он появляется пять раз. Раньше я только смотрел там, где я ожидал этого селектора. –

+0

Отличный ответ. Легко и правильно работает. – kwoxer