【问题标题】:PHP webdriver wait for Ajax to finish executingPHP webdriver 等待 Ajax 完成执行
【发布时间】:2020-10-29 11:44:41
【问题描述】:

只是想检查一下 ajax 是否不再执行,但是关于这方面的文档并不多。

我找到的最接近的答案是: phpwebdriver selenium wait for ajax

我尝试修改以下答案中的代码:

public function waitForAjaxComplete()
{

    $wait = new WebDriverWait($driver, 30);
    $wait->until(function(){
        $condition = 'arguments[0].call(null, $.active == 0)';
        if($driver->executeAsyncScript(array(
            'script' => $condition,
            'args' => array()
        ))
        )
            return true;
    }, 10000);
}

但它返回以下内容:

PHP Fatal error:  Uncaught Facebook\WebDriver\Exception\UnknownServerException: java.util.HashMap cannot be cast to java.lang.String in vendor/facebook/webdriver/lib/Exception/WebDriverException.php:114

我尝试了 $condition 的变体,但它总是返回相同的东西。当然,其他人会发现这个解决方案很有用,因为它有助于确定页面容器何时通过 Ajax 完成重新加载新内容,或者只是能够使用 php webdriver 确认 javascript 何时停止在页面上执行

【问题讨论】:

标签: selenium selenium-webdriver


【解决方案1】:

如果你使用 jQuery 进行 AJAX 请求,你可以使用这个:

$driver->wait()->until(
    function ($driver) {
        return $driver->executeScript('return jQuery.active === 0;');
    }
);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 2011-09-06
  • 2016-05-23
  • 1970-01-01
  • 2016-02-21
  • 2015-09-16
  • 2017-05-20
相关资源
最近更新 更多