2014-01-22 22 views
0

我使用硒webdriver(JAVA)在測試和我有一個火災事件方法,應該是可重用的,取決於傳入它的定位器。我的代碼如下:Java - 如何使用JavaScriptExecutor調用字符串中的變量?

public void fireEvent() { 

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

} 

有沒有辦法爲這個特定的代碼來接受的「腳」的任何元素的ID,可以使它看起來像:

public void fireEvent(String locator) { 

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

} 

提前感謝!

回答

0

接收「executeScript」是一個普通的字符串的JavaScript代碼,就可以構成這個字符串像往常一樣,例如:

public void fireEvent(String locator) { 
    String jsToExecute = String.format("return document.getElementById('%s').blur()", locator​​​​​​​​​​​​​​​)​ 
    ((JavascriptExecutor) driver).executeScript(jsToExecute); 
} 
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); 
} 
相關問題