Codeception 检查具有相同定位器的多个元素

Codeception check several elements with same locator

我的页面上有多个元素具有相同的定位器。 示例:

<div.test-info><a>Test1</a></div>
<div.test-info><a>Test2</a></div>
<div.test-info><a>Test3</a></div>
<div.test-info><a>Test4</a></div>

页面上可能有 20 个或更多元素。

在 python 中,我用 FOR 循环测试了这个,运行 通过元素数组,用 'findElemenets' 方法抓取。

我的问题是我不知道如何使用 Codeception 执行此操作。 我找到了方法“_findElements”,但它 returns Facebook\WebDriver\Remote\RemoteWebElement 个实例。

喜欢:

Array
  (
      [0] => Facebook\WebDriver\Remote\RemoteWebElement Object
          (
              [executor:protected] => Facebook\WebDriver\Remote\RemoteExecuteMethod Object
                  (
                      [driver:Facebook\WebDriver\Remote\RemoteExecuteMethod:private] => Facebook\WebDriver\Remote\RemoteWebDriver Object
                          (
                              [executor:protected] => Facebook\WebDriver\Remote\HttpCommandExecutor Object
                                  (
                                      [url:protected] => http://127.0.0.1:4444/wd/hub
                                      [curl:protected] => Resource id #326
                                  )

                              [sessionID:protected] => 109595b5-f094-4824-ac10-fc7d6353b799
                              [mouse:protected] => 
                              [keyboard:protected] => 
                              [touch:protected] => 
                              [executeMethod:protected] => Facebook\WebDriver\Remote\RemoteExecuteMethod Object
   *RECURSION*
                          )

                  )

              [id:protected] => 0
              [fileDetector:protected] => Facebook\WebDriver\Remote\UselessFileDetector Object
                  (
                  )

          )

      [1] => Facebook\WebDriver\Remote\RemoteWebElement Object
          (
              [executor:protected] => Facebook\WebDriver\Remote\RemoteExecuteMethod Object
                  (
                      [driver:Facebook\WebDriver\Remote\RemoteExecuteMethod:private] => Facebook\WebDriver\Remote\RemoteWebDriver Object
                          (
                              [executor:protected] => Facebook\WebDriver\Remote\HttpCommandExecutor Object
                                  (
                                      [url:protected] => http://127.0.0.1:4444/wd/hub
                                      [curl:protected] => Resource id #326
                                  )

                              [sessionID:protected] => 109595b5-f094-4824-ac10-fc7d6353b799
                              [mouse:protected] => 
                              [keyboard:protected] => 
                              [touch:protected] => 
                              [executeMethod:protected] => Facebook\WebDriver\Remote\RemoteExecuteMethod Object
   *RECURSION*
                          )

                  )

              [id:protected] => 1
              [fileDetector:protected] => Facebook\WebDriver\Remote\UselessFileDetector Object
                  (
                  )

          )

  )

我该如何操作这些数据,或者有其他好的方法来解决我的问题吗?

如果要获取div的内容,使用grabMultiple方法,它是returns字符串数组。

$I->grabMultiple('div.test-info a')

$elements = $I->_findElements('div.test-info a');
foreach($elements as $element)
{
  *do some testing* for example $element->click();
}

可用于 RemoteWebElement 的方法,请参阅 http://facebook.github.io/php-webdriver/classes/RemoteWebElement.html

这是可行的解决方案:

$allLinks = $I->grabMultiple('.readmore'); //grab all clickable links

for( $i = 0; $i<sizeof($allLinks); $i++ ) { //iterate through a loop

$I->click($allLinks[$i]); //click each link 

}