PHP Mink 当我更改会话时,foreach 中使用的数据发生更改

PHP Mink when i change session, the data that used in foreach changes

例如,如果我创建一个数组并运行 foreach

<?php

     $array = [1,2,3,4,5,6,7,8,9,10];

      foreach($array as $number){

        echo $number."<br>";

        $array = ['a','b','c','d'];

      }

 ?>

结果:

1
2
3
4
5
6
7
8
9
10

并在回显数字后更改设置数组,数组不变 或者即使我在数组上添加新项目也不会改变结果,我的意思是数组在 foreach

中不会改变
 foreach ....
 echo $number."<br>";
 $array[]='x';
 ...

结果:相同

但是当我做那样的事情时
$selected_category 设置为 link;

$session = Helpers::mink($selected_category);

            $page = $session->getPage();

            $as =  $page->find('css', 'div#seasons-list')->findAll('css','a');

            $items = [];
            foreach ($as as $value) {

                $link = $value->getAttribute('href');



                $session->visit($link);

                $page = $session->getPage();

                $episodes = $page->find('css','div#category-posts')->findAll('css','article.grid-box');


                foreach ($episodes as $episode) {

                /* line 97 */       $link = $episode->find('css','a')->getAttribute('href');    

                    /* line 98 */   $session->visit($link);

                        $page = $session->getPage();

                        $items[] = $a= $page->findAll('css','span.embed-responsive-item')[0]->find('css','iframe')->getAttribute('src');
}

首先获取我期望的数据,当我在会话中设置新的 url 在第 98 行,当这个 returns 我收到这个错误 致命错误:未捕获错误:调用成员函数 getAttribute() on null ... line 97

这意味着 $episodes 对象改变了,但为什么,为什么它在第一个 foreach 上没有改变而在第二个中改变

请记住:

  1. 在每一页上reload/refresh对象丢失
    示例:查找元素 > 刷新页面/导航到类似页面 > 对之前保存在变量中的对象元素执行一些操作 => 来自 selenium

  2. 的陈旧元素错误
  3. 确保您使用的方法正确
    示例:如果找到元素,find() 方法将 return 一个元素对象 如果找不到元素,它将 return null找到了。

第二种是你的情况,你在null上使用getAttribute,你应该处理这种错误(在这种情况下是致命错误)。

为了处理它确保找到元素,搜索带有 find 的元素然后检查 returns 是否是 null,如果是则抛出异常.