【问题标题】:Selenium WebDrive problems with foreachForeach 的 Selenium WebDriver 问题
【发布时间】:2019-04-27 08:27:41
【问题描述】:

所以我尝试使用我获得的链接进行 foreach,但 foreach 中的代码仅适用于第一个链接,但它不再有效,并且我收到了此错误消息。

    $links = $driver->findElements( WebDriverBy::xpath( '//*[@id="ctl00_ContentBody_grvStudentResult"]/tbody/tr/td/span/a' ) );
foreach( $links as $key => $value )
{
    $link = $value->getAttribute( 'href' );
    $rawPage = $driver->get( $link );

    $dados = $rawPage->findElement( WebDriverBy::cssSelector( '#fmvSession tbody tr td h2' ) )->getText();
    $a = explode( ': ', $dados );
    $b = explode( ', ', $a[ 1 ]);
    echo "01: " . trim( $b[ 0 ] ) . "\n";
    echo "02: " . trim( $b[ 1 ] )  . "\n";
}

错误信息:

致命错误:未捕获 Facebook\WebDriver\Exception\StaleElementReferenceException:过时 元素引用:元素未附加到页面文档
(会话信息:chrome=70.0.3538.102)

【问题讨论】:

    标签: php selenium selenium-webdriver webdriver


    【解决方案1】:

    当您导航到另一个页面时,$links 不再有效,您在一个新页面中,因此之前定位的 WebElements 现在已过时。将链接保存为字符串列表并对其进行迭代

    $elements = $driver->findElements(WebDriverBy::xpath( '//*[@id="ctl00_ContentBody_grvStudentResult"]/tbody/tr/td/span/a'));
    
    $links = [];
    foreach ($elements as $element) {
        $links[] = $element->getAttribute('href');
    }
    
    foreach($links as $link)
    {
        $rawPage = $driver->get($link);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 2011-12-25
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多