Selenium Web驱动程序循环错误:ObsoleteElementWebDriverError


Selenium webdriver looping error: ObsoleteElementWebDriverError

我目前正在创建一个单元测试,该测试将使用Selenium和Facebook的php-webdriver在网站中实现。我正在尝试浏览所有超链接,并使用以下代码验证它们是否正确工作:

$this->webDriver->get($this->url);
    $results = $this->webDriver->findElements(WebDriverBy::cssSelector('a'));
    for($i = 0; $i < count($results); $i++)
    {
        $this->webDriver->get($results[$i]->getAttribute('href'));
        echo $this->webDriver->getTitle() . "'n";
        $this->webDriver->navigate()->back();
    }

出现的问题是,在第一次"获取"后,单元测试退出,并出现以下错误:

ObsoleteElementWebDriverError on
#4 C:'xampp'htdocs'php-webdriver-demo-master'tests'GitHubTest.php(63): RemoteWebElement->getAttribute('href')
#5 [internal function]: GitHubTest->testSearch()

例如,当我不从页面切换时,当我只是在整个循环中呼应标题时,它会完美地循环。但只要我添加一个动作,它就停止工作了。我尝试过实现"等待",但没有任何运气,它仍然会抛出同样的错误。此外,当只运行一次而不循环时,代码可以完美地工作。。我好像想不通,已经嘎吱嘎吱地讲了几个小时了。。你有什么想法吗?

您可以在加载其他页面之前保留hrefs。

$this->webDriver->get($this->url);
$results = $this->webDriver->findElements(WebDriverBy::cssSelector('a'));
$hrefs = array();
for($i = 0; $i < count($results); $i++)
{
    $hrefs[] = $results[$i]->getAttribute('href');
}
for($i = 0; $i < count($hrefs); $i++)
{
    $this->webDriver->get($hrefs[$i]);
    echo $this->webDriver->getTitle() . "'n";
    $this->webDriver->navigate()->back();
}

此外,没有必要使用navigate()->back();

相关文章:
  • 没有找到相关文章