10

PHPUnit Selenium 2 テスト ケースでは、クラスを指定して要素を選択するのは簡単です。

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

ただし、 の項目が 2 つある場合でもmy_class、セレクターはそのうちの 1 つ (おそらく最初の項目) のみを選択します。それらをすべて選択するにはどうすればよいですか?次のようなものをいただければ幸いです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 に答える
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 に答える
0

WebDriver メソッドのfindElements(By by)は、必要なことを正確に実行する必要があります。

于 2013-05-21T14:10:59.973 に答える