【发布时间】: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 何时停止在页面上执行
【问题讨论】:
-
这就是 WebDriverWaits 的用途。测试 ajax 调用完成后出现在 DOM 中的条件:selenium.dev/documentation/en/webdriver/waits
标签: selenium selenium-webdriver