【问题标题】:Java - How can you call a variable inside a string using JavaScriptExecutor?Java - 如何使用 JavaScriptExecutor 在字符串中调用变量?
【发布时间】:2014-01-22 02:09:51
【问题描述】:

我在测试中使用 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()");

}

提前致谢!

【问题讨论】:

    标签: java javascript selenium selenium-webdriver


    【解决方案1】:

    你可以试试

    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);
    }
    

    【讨论】:

      【解决方案2】:

      接收“executeScript”的javascript代码是一个普通的String,你可以像往常一样组成这个String,例如:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多