java - 如何启动 javascript 脚本并从 java 传递 DOM 元素,同时拥有纯 html?

标签 java javascript html selenium smartclient

我正在自动化使用 SmartClient 的 Web 应用程序,现在我需要一些强大的方法来构建表单定位器并填充输入字段。我们有基于 Selenium 和 SmartClient 的 scLocators 的测试框架。测试设计者提供了他想要填充的表单单元格的标签,并且该单元格位于同级 DOM 元素中。我可以解析他的输入和当前的 html,以生成所需的表单单元格的内部 html。我决定使用SmartGWT提供的javascript函数getLocator: https://code.google.com/p/smartgwt/source/browse/trunk/main/src/com/smartclient/public/sc/system/tools/AutoTest.js?r=37 正如我所见,它在 Selenium IDE 的 SC 扩展中运行良好。如何创建此函数所需的 DOMElement 并执行此 JavaScript 代码?

最佳答案

我将与您分享从 java 执行 js 的常见方法(在 java 上使用 selenium webDriver 时)并分享我使用的一些函数:

我建议您使用JavascriptExecutor用于此目的的界面如下:

使用 javascriptExecutor 提取文本:

 String cssSelector="abracadabra";    
JavascriptExecutor js = (JavascriptExecutor) driver;        
StringBuilder stringBuilder = new StringBuilder();        
stringBuilder.append("var x = $(\""+cssSelector+"\");");
stringBuilder.append("return x.text().toString();");      
String res= (String) js.executeScript(stringBuilder.toString());
Assert.assertTrue(res.trim().contains("Assigned VDIs")   );

点击元素 要么:

driver.executeScript(“document.getElementById(‘addToCart’).click();”);

public void jsClick(String cssSelector){
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
}

================== 总结一下使用 WebDriver 执行 javascript 的方法:

要解决的问题示例:

- 您可能想在特定元素上触发事件。 (直接调用blur事件)

- 您可能想要执行一些脚本来执行一些其他操作。 (而不是点击直接调用onclick目标脚本)

实现示例:

将 WebDriver 实例转换为 JavaScriptExecutor 使用executeScript()方法执行脚本

一段代码:

WebDriver driver = new FirefoxDriver();
JavaScriptExecutor js=(JavaScriptExecutor)driver;  //casting driver instance
js.executeScript("return document.title");  //for getting window tile
js.executeScript("return window.name");  //for getting window name
js.executeScript("$('#elementId').blur()");  //firing blur event on an element

希望这些信息对您有帮助。

关于java - 如何启动 javascript 脚本并从 java 传递 DOM 元素,同时拥有纯 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020039/

相关文章:

javascript - 在 Javascript/JQuery 中什么是 $.为了?

javascript - Openlayers 4+ 使用本地矢量图 block (.pbf),无需服务器

javascript - 如何增加 PhantomJS 中的访问者 session 持续时间?

javascript - 如何在 JavaScript 中删除 blob 文件?

java - 关于@Override注解的使用

java - 是否有用于处理访问控制列表的 Java 库?

java - 无法将可打包数组列表发送到服务类

java - 在Java游戏中实现声音

javascript - 单击按钮时增加 CSS 属性

html - 如何动态设置iframe大小