Выберите все подходящие элементы в тестовом примере PHPUnit Selenium 2
Просто выбрать элемент, указав его класс, в тестовом примере PHPUnit Selenium 2:
$element = $this->byClassName("my_class");
Однако, даже если есть два элемента my_class
, селектор выбирает только один из них (возможно, первый). Как я могу выбрать все из них? Я бы оценил что-то вроде allByClassName
:
$elements = $this->allByClassName("my_class");
foreach($elements as $element) {
doSomethingWith($element);
}
Есть ли что-то вроде allByClassName
в расширении PHPUnit Selenium 2?
Ответы
Ответ 1
Pavel, вы можете найти руководство по выбору нескольких элементов здесь: https://github.com/sebastianbergmann/phpunit-selenium/blob/b8c6494b977f79098e748343455f129af3fdb292/Tests/Selenium2TestCaseTest.php
линии 92-98:
public function testMultipleElementsSelection()
{
$this->url('html/test_element_selection.html');
$elements = $this->elements($this->using('css selector')->value('div'));
$this->assertEquals(4, count($elements));
$this->assertEquals('Other div', $elements[0]->text());
}
(Этот файл содержит тесты для самого класса Selenium2TestCase, поэтому он отлично подходит для изучения его возможностей)
Следуя этому методу, вы можете получить все элементы с определенным классом следующим образом:
$elements = $this->elements($this->using('css selector')->value('*[class="my_class"]'));
Надеюсь, что это поможет.
Ответ 2
Чтобы выбрать несколько элементов по классам, используйте:
$elements = $this->elements($this->using('css selector')->value('.my_class'));
Ответ 3
Метод WebDriver findElements (By by) должен делать именно то, что вам нужно.
Ответ 4
У меня была точно такая же проблема, поэтому я попробовал решение, которое отправил @David. Это работает, но почему-то Selenium пытался найти элемент снова и снова, поэтому мое тестовое время увеличилось на 15 секунд именно на этом.
Чтобы быть быстрее, я закончил создание идентификатора для моего класса и подсчета элементов внутри:
$elements = $this->elements($this->using('css selector')->value('#side-menu li'));
$this->assertEquals(0, count($elements));