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

问题描述 投票:2回答:3

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

javaScriptExecutor.executeScript("arguments[0].click()", webElement);
javascript java selenium selenium-webdriver webdriver
3个回答
3
投票

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

  • 根据您的示例,要使javaScriptExecutor.executeScript("arguments[0].click()", webElement);工作,您需要定义webElement。 executeScript()方法将元素的引用作为参数[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”被称为参数[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的更多细节


1
投票

它似乎是在一个匿名函数的上下文中运行,无论driver.findElement(locator)产生什么,它都会被传递。

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

© www.soinside.com 2019 - 2024. All rights reserved.