10

在 PHPUnit Selenium 2 测试用例中,通过指定其类来选择元素很简单:

$element = $this->byClassName("my_class");

但是,即使有 的两项my_class,选择器也只会选择其中一项(可能是第一项)。我怎样才能选择所有这些?我将不胜感激allByClassName

$elements = $this->allByClassName("my_class");
foreach($elements as $element) {
    doSomethingWith($element);
}

allByClassNamePHPUnit Selenium 2 扩展中有类似的东西吗?

4

4 回答 4

19

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"]'));

希望这可以帮助。

于 2013-06-14T16:29:10.407 回答
1

To select multiple elements by class, use:

$elements = $this->elements($this->using('css selector')->value('.my_class'));
于 2014-10-27T01:26:27.667 回答
0

WebDriver 方法findElements(By by)应该完全符合您的需要。

于 2013-05-21T14:10:59.973 回答
0

我遇到了完全相同的问题,所以我尝试了@David 发布的解决方案。它有效,但不知何故 Selenium 一次又一次地试图找到元素,所以我的测试时间增加了 15 秒。

为了更快,我最终为我的班级创建了一个 ID 并计算了里面的元素:

$elements = $this->elements($this->using('css selector')->value('#side-menu li'));
$this->assertEquals(0, count($elements));
于 2016-12-14T10:46:55.297 回答