当通过Selenium WebDriver从JavascriptExecutor接口使用executeScript方法时,参数[0]和参数[1]是什么意思?

时间:2018-04-17 06:40:17

标签: javascript java selenium selenium-webdriver webdriver

通过Selenium WebDriver从 JavascriptExecutor 界面使用 arguments[0] 方法时arguments[1]executeScript()的含义是什么?目的是什么以下代码中的arguments[0]

javaScriptExecutor.executeScript("arguments[0].click()", webElement);

3 个答案:

答案 0 :(得分:3)

executeScript()接口中的JavascriptExecutor方法可以以 arguments [0] arguments [1] 的形式调用多个参数,等等

  • 根据您的示例,要javaScriptExecutor.executeScript("arguments[0].click()", webElement);工作,您需要定义 webElement executeScript()方法会将元素引用为 arguments [0] 以及 方法 要执行[在这种情况下click()],此后应提供参考。

    WebElement webElement = driver.findElement(By.xpath("xpath_element"));
    JavascriptExecutor javaScriptExecutor = (JavascriptExecutor)driver;
    javaScriptExecutor.executeScript("arguments[0].click()", webElement);
    
  • 同样,具有多个参数[] executeScript()示例如下:

    JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("arguments[0].setAttribute('style', arguments[1])", driver.findElement(By.xpath("//input[@type='file']")), "0");
    

    在此示例中:

    • driver.findElement(By.xpath("//input[@type='file']被称为参数[0]
    • " 0"被称为 arguments [1]

答案 1 :(得分:1)

对于executeScript API:executeScript(script/function, arg1, arg2, arg3, ...)

第一个参数是javascript片段或javascript函数,如果它是一个javascript片段,它将被包装到executeScript内的javascript函数中。

接下来的参数是javascript函数的参数代表第一个参数。

arguments是javascript函数内置功能。你可以使用它来获取调用函数时的实际传入参数。请看下面的例子:

test('tom', 12, 'male', '175cm') // call function: test

function test(name, age) {
  console.log(name); // tom
  console.log(age);  // 12
  console.log(arguments); // ['tom', 12, 'male', '175cm']
  console.log(arguments[0]); // equal to argument: name, so print tom
  console.log(arguments[1]); // equal to argument: age, so print 12
  console.log(arguments[2]); // male
  console.log(arguments[3]); // 175cm
}

有关Javascript Function.arguments

的更多详细信息

答案 2 :(得分:1)

它似乎是在一个匿名函数的上下文中运行,它正在通过driver.findElement(locator)生成的任何内容。

因此,arguments[0]是您访问匿名函数的第一个参数的方式,同样适用于arguments[1]