通过Selenium WebDriver从 JavascriptExecutor 界面使用 arguments[0]
方法时arguments[1]
和executeScript()
的含义是什么?目的是什么以下代码中的arguments[0]
。
javaScriptExecutor.executeScript("arguments[0].click()", webElement);
答案 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] 答案 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]