Java - 如何使用JavaScriptExecutor调用字符串中的变量?

时间:2014-01-22 02:09:52

标签: java javascript selenium selenium-webdriver

我在测试时使用selenium webdriver(JAVA),我有一个火灾事件方法,根据传入它的定位器,它应该是可重用的。我的代码如下:

public void fireEvent() {

((JavascriptExecutor) driver).executeScript("return document.getElementById('pin').blur()");

}

这个特定代码是否有办法接受'pin'上的任何元素ID,这可以使它看起来像:

public void fireEvent(String locator) {

((JavascriptExecutor) driver).executeScript("return document.getElementById('{locator}').blur()");

}

提前致谢!

2 个答案:

答案 0 :(得分:3)

你可以去吧

public void fireEvent(String elementId) {
     ((JavascriptExecutor) driver).executeScript("return document.getElementById('arguments[0]').blur()", elementId);
}

您可以尝试传递元素本身,而不是传递字符串elementId,这样您就不必再担心ByIdByClassName

public void fireEvent(WebElement element) {
     ((JavascriptExecutor) driver).executeScript("return arguments[0].blur()", element);
}

答案 1 :(得分:0)

接收“executeScript”的javascript代码是常规字符串,您可以照常编写此String,例如:

public void fireEvent(String locator) {
  String jsToExecute = String.format("return document.getElementById('%s').blur()", locator​​​​​​​​​​​​​​​)​
  ((JavascriptExecutor) driver).executeScript(jsToExecute);
}