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

问题描述 投票:1回答:3

我的页面上有几个元素与相同的定位器。例:

<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',但它返回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
                  (
                  )

          )

  )

我如何使用这些数据,还是有另一种解决问题的好方法?

php webdriver codeception
3个回答
1
投票
$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


2
投票

如果你想获得div的内容,使用grabMultiple方法,它返回字符串数组。

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


0
投票

这是工作解决方案:

$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 

}
© www.soinside.com 2019 - 2024. All rights reserved.