首页 > 解决方案 > 如何在 Selenium WebDriver 中使用 JavaScriptExecutor 在加载 js 脚本时执行 js 函数

问题描述

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

索引.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>

Java 代码

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("www.test-url.com");
js.executeScript("loadData(123)");

如果我Thread.sleep(5000);在上面的 js.executeScript 代码行之间添加,上面的代码有效,但在我删除它时无效。我如何更换 Thread.sleep(5000);并仍然使其工作

标签: javascriptjavaseleniumselenium-webdriverwebdriver

解决方案


你试过这个吗?

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("console.log('Javascript console');");

您需要将 WebDriver 转换为 JavascriptExecutor 对象。除非您执行此转换,否则 ExecuteScript 函数将不可用。然后您将可以访问 .executeScript() 函数

Sample driver = new Sample (new SampleProfile());
driver.executeScript("console.log('Javascript console');");

推荐阅读