gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:20 25 4
gpt4 key购买 nike

我正在自动化使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com