【问题标题】:Selenium+PHPunit: foreach element in collectionSelenium + PHPunit:集合中的foreach元素
【发布时间】:2011-08-03 19:03:46
【问题描述】:

我正在寻找一种方法来使用 PHPunit 处理 Selenium 中的元素集合。假设我有以下代码:

<div class="test">aaa</div>
<div class="test">bbb</div>
<div class="test">ccc</div>

我希望能够处理每个循环内的所有 &lt;div&gt; 元素,比如说通过使用 //div[@class='test'] 根据它们的类选择元素

$divs = ...  // 
foreach ($divs as $div) {
 // do something
}

【问题讨论】:

    标签: collections selenium foreach phpunit element


    【解决方案1】:

    获取整个页面内容的函数是:- getHtmlSource() 因此,您加载 HTML 的最终函数调用将类似于 .. $dom->loadHTML($this->getHtmlSource());

    【讨论】:

      【解决方案2】:

      在 PHP 中,如果您想处理一些 HTML 数据,一个很好的解决方案是使用 DOMDocument--这意味着能够使用 DOM 方法 -- 通过其 @987654322 @方法。


      使用 DOMDocument 加载 HTML:

      $dom = new DOMDocument();
      $dom->loadHTML('HERE YOUR HTML STRING');
      

      然后您可以实例化 DOMXpath 对象:

      $xpath = new DOMXPath($dom);
      


      这将允许您使用 XPath 查询和 DOMXPath::query() 从 HTML 中提取数据:

      $entries = $xpath->query('//div[@class="test"]'); // notice quotes
      if ($entries->length > 0) {
          foreach ($entries as $entry) {
              // Work on the $entry -- which is a DOM node/element
          }
      }
      

      【讨论】:

      • 这是为PHP端排序的,我现在缺少的是在我运行后从$this检索页面内容的方法: $this->setBrowser('*firefox'); $this->setBrowserUrl('example.com/'); $this->open('example.com/');
      • 我知道有一种方法可以从 Selenium 获取页面的整个 HTML;几年前我用过它,但我不记得它的名字了 :-( 抱歉——通过源代码,你可能会找到它...
      猜你喜欢
      • 2020-08-30
      • 2020-03-25
      • 1970-01-01
      • 2020-11-26
      • 2019-12-19
      • 2023-04-02
      • 2013-02-14
      • 2015-04-25
      • 2014-12-05
      相关资源
      最近更新 更多