作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户点击此链接:
<span onclick="slow_function_that_fills_the_panel(); $('#panel').show();">
现在我正在模拟 phantomjs 中的点击:
page.evaluate(
function() { $("#panel").click(); }
);
console.log('SUCCESS');
phantom.exit();
Phantom 在慢速函数结束执行并且 DIV 变得可见之前退出。如何实现等待?
最佳答案
以下是 Cybermaxs 的回答:
function waitFor ($config) {
$config._start = $config._start || new Date();
if ($config.timeout && new Date - $config._start > $config.timeout) {
if ($config.error) $config.error();
if ($config.debug) console.log('timedout ' + (new Date - $config._start) + 'ms');
return;
}
if ($config.check()) {
if ($config.debug) console.log('success ' + (new Date - $config._start) + 'ms');
return $config.success();
}
setTimeout(waitFor, $config.interval || 0, $config);
}
使用示例:
waitFor({
debug: true, // optional
interval: 0, // optional
timeout: 1000, // optional
check: function () {
return page.evaluate(function() {
return $('#thediv').is(':visible');
});
},
success: function () {
// we have what we want
},
error: function () {} // optional
});
使用配置变量会更容易一些。
关于javascript - 如何在 phantomjs 中等待元素可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16807212/
我是一名优秀的程序员,十分优秀!