Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待脚本完成后再切换到selenium中的帧_Javascript_Java_Jquery_Selenium - Fatal编程技术网

Javascript 等待脚本完成后再切换到selenium中的帧

Javascript 等待脚本完成后再切换到selenium中的帧,javascript,java,jquery,selenium,Javascript,Java,Jquery,Selenium,我正在尝试切换到iframe,但在切换之前必须等待脚本完成 正如我在这里所问的:并回答了它,我可以强制切换到父帧,并使用相同的想法切换到包含或不包含任何脚本的帧 问题是强制切换不是一个好方法。它类似于使用线程。sleep(500),因为我知道执行脚本大约需要500毫秒 因此,我尝试使用以下方法等待jQuery和JavaScript完成: // Wait for JS public static ExpectedCondition<Boolean> waitForJSToLoad()

我正在尝试切换到iframe,但在切换之前必须等待脚本完成

正如我在这里所问的:并回答了它,我可以强制切换到父帧,并使用相同的想法切换到包含或不包含任何脚本的帧

问题是强制切换不是一个好方法。它类似于使用
线程。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});
}