selenium - PHP webdriver 等待 Ajax 完成执行
问题描述
只是想检查 ajax 是否不再执行,但在这方面的文档并不多。
我找到的最接近的答案是: phpwebdriver selenium 等待 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 何时停止在页面上执行
解决方案
如果您使用 jQuery 进行 AJAX 请求,则可以使用:
$driver->wait()->until(
function ($driver) {
return $driver->executeScript('return jQuery.active === 0;');
}
);
推荐阅读
- react-native - 如何在 react-native 中输入文本输入时获得建议
- java - Kotlin 中运行时 Json 处理程序包装器的实际类类型
- django - 是否有允许管理员按字段值对模型对象进行排序的 django 管理小部件?
- c++ - 为什么变量和函数不能同名?
- python - 如何检查字符串是否包含字符和空格(空字符)?
- reactjs - 通过 React useEffect 方法对数组中的 obj 进行排序
- .net - WebView2 中的搜索功能
- css - 使用 div 创建的按钮的形状边框
- c++ - 调用基类变量的分段错误
- python - Python 3 如何从导出商和余数返回单独的列表