javascript - 如何在 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);
并仍然使其工作
解决方案
你试过这个吗?
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');");
推荐阅读
- git - gitlab-ce中发布分支之间的自动合并
- java - 在 contextConfigLocation 参数中配置的 xml 中替换占位符的问题
- c# - .NET Core 3.0 AutoMapper 如何在映射中提供参数
- r - 重组 R 中的多个列
- powershell - 我可以从 powershell 模块调试依赖程序集吗
- flutter - 从 FlutterDocumentPicker 导航回来
- android - Android 中的 notificationManager.notify 和 startForeground 有什么区别?
- python-3.x - 将日期更改为下一个交易日期
- python - 我正在通过 Git 将 Rails 应用程序部署到 Azure,推送时出现无此类文件错误
- java - 使用 Netbeans IDE / Derby 的 WHERE 子句上的 SQL 语法错误