Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
如何在SeleniumWebDriver中使用JavaScriptExecutor在js脚本加载时执行js函数_Javascript_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

如何在SeleniumWebDriver中使用JavaScriptExecutor在js脚本加载时执行js函数

如何在SeleniumWebDriver中使用JavaScriptExecutor在js脚本加载时执行js函数,javascript,java,selenium,selenium-webdriver,webdriver,Javascript,Java,Selenium,Selenium Webdriver,Webdriver,我试图在js脚本加载到HTML页面后执行js函数。但问题是js脚本在HTML页面上加载需要一些时间。如果我在java代码中添加几秒钟的睡眠,然后执行js函数,效果会很好 index.html <!DOCTYPE HTML> <html lang="en"> <head> </head> <body> </body> <script> var loadJS = function(url

我试图在js脚本加载到HTML页面后执行js函数。但问题是js脚本在HTML页面上加载需要一些时间。如果我在java代码中添加几秒钟的睡眠,然后执行js函数,效果会很好

index.html

<!DOCTYPE HTML>
<html lang="en">
<head>
</head>
<body>

</body>
<script>
    var loadJS = function(url) {
        var script = document.createElement("script");  
        script.src = url;  
        document.body.appendChild(script); 
    }   
</script>
</html>
如果我添加
Thread.sleep(5000),上面的代码可以工作在上面的js.executeScript代码行之间,但不是在我删除它时。我如何更换新的

Thread.sleep(5000)并且仍然可以工作

您尝试过这个吗

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("console.log('Javascript console');");
您需要将WebDriver强制转换为JavascriptExecutor对象。除非执行此强制转换,否则ExecuteScript函数将不可用。然后您将可以访问.executeScript()函数


在执行javascript之前尝试使用此代码,这将迫使WebDriver等待页面完全加载:

WebDriverWait wait = new WebDriverWait(driver, 50);
wait.until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")); 
WebDriverWait wait=newwebdriverwait(驱动程序,50);
等待.until((ExpectedCondition)wd->((JavascriptExecutor)wd).executeScript(“return document.readyState”).equals(“complete”);

请阅读,是的,我已经这样做了,在我使用executeScript加载js后,我想执行一个js函数,但没有找到该函数,因为该脚本尚未加载到HTML页面上。是的,您是否尝试在标题中移动js?是的,我正在标题中加载js
Sample driver = new Sample (new SampleProfile());
driver.executeScript("console.log('Javascript console');");
WebDriverWait wait = new WebDriverWait(driver, 50);
wait.until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));