Javascript 等待脚本完成后再切换到selenium中的帧
我正在尝试切换到iframe,但在切换之前必须等待脚本完成 正如我在这里所问的:并回答了它,我可以强制切换到父帧,并使用相同的想法切换到包含或不包含任何脚本的帧 问题是强制切换不是一个好方法。它类似于使用Javascript 等待脚本完成后再切换到selenium中的帧,javascript,java,jquery,selenium,Javascript,Java,Jquery,Selenium,我正在尝试切换到iframe,但在切换之前必须等待脚本完成 正如我在这里所问的:并回答了它,我可以强制切换到父帧,并使用相同的想法切换到包含或不包含任何脚本的帧 问题是强制切换不是一个好方法。它类似于使用线程。sleep(500),因为我知道执行脚本大约需要500毫秒 因此,我尝试使用以下方法等待jQuery和JavaScript完成: // Wait for JS public static ExpectedCondition<Boolean> waitForJSToLoad()
线程。sleep(500)
,因为我知道执行脚本大约需要500毫秒
因此,我尝试使用以下方法等待jQuery和JavaScript完成:
// Wait for JS
public static ExpectedCondition<Boolean> waitForJSToLoad() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(final WebDriver driver) {
return ((JavascriptExecutor) driver).executeScript("return document.readyState").toString().equals("complete");
}
};
}
// Wait for jQuery
public static ExpectedCondition<Boolean> waitForAjaxResponse() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(final WebDriver driver) {
try {
final JavascriptExecutor js = (JavascriptExecutor) driver;
return js.executeScript(
"return((window.jQuery == null )||(window.jQuery != null && jQuery.active === 0))").equals(true);
} catch (final WebDriverException e) {
LOG.info("Error while waiting for jQuery");
return false;
}
}
};
}
我查看了一些类似的案例,但找不到问题的任何答案。您可以轻松尝试等待并捕获超时exception@pburgr是的,我已经这样做了,但是捕获这个异常是不正常的,问题是在切换之前等待脚本完成。
function _optimizeSize() {
var $popin = $('#iframePopin'),
// Some var init
$dialog.transition({top: optimizeTop});
$popin.transition({height: contentHeight + actionBarHeight + popinPaddingHeight});
$iFrame.transition({height: contentHeight});
}