我在测试时使用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()");
}
提前致谢!
答案 0 :(得分:3)
你可以去吧
public void fireEvent(String elementId) {
((JavascriptExecutor) driver).executeScript("return document.getElementById('arguments[0]').blur()", elementId);
}
您可以尝试传递元素本身,而不是传递字符串elementId
,这样您就不必再担心ById
或ByClassName
。
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);
}