当使用来自JavascriptExecutor界面的arguments[0]
方法通过Selenium WebDriver时,arguments[1]
和executeScript()
的含义是什么?以下代码中arguments[0]
的用途是什么?
javaScriptExecutor.executeScript("arguments[0].click()", webElement);
来自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]对于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的更多细节
它似乎是在一个匿名函数的上下文中运行,无论driver.findElement(locator)
产生什么,它都会被传递。
所以,arguments[0]
是你访问匿名函数的第一个参数的方式,同样适用于arguments[1]