代码之家  ›  专栏  ›  技术社区  ›  Vel Guru

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

  •  9
  • Vel Guru  · 技术社区  · 6 年前

    什么是 arguments[0] arguments[1] 使用时的平均值 executeScript() 方法来自 JavascriptExecutor 通过Selenium WebDriver的接口以及 参数[0] 在下面的代码中。

    javaScriptExecutor.executeScript("arguments[0].click()", webElement);
    
    4 回复  |  直到 6 年前
        1
  •  18
  •   undetected Selenium    5 年前

    这个 executeScript() 方法 JavascriptExecutor 接口可以以以下形式调用多个参数 参数[0] ,则, 参数[1]

    • 根据您的示例 javaScriptExecutor.executeScript("arguments[0].click()", webElement); 要工作,你需要 Web元素 定义 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]

    您可以在中找到相关讨论 What is arguments[0] while invoking execute_script() method through WebDriver instance through Selenium and Python?

        2
  •  1
  •   yong    6 年前

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

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

    下一个参数是表示第一个参数的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

        3
  •  1
  •   iamsankalp89    6 年前

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

    所以 arguments[0] 是访问匿名函数的第一个参数的方式,对于 arguments[1]

        4
  •  0
  •   Cody    3 年前

    下面是使用参数[0]和参数[2]的工作示例:

    奥布杰。ExecuteScript“arguments[0]。value=arguments[1]”,数组(objIE.FindElementById(“sqlvalue1”),Sheets(“SheetName”)。范围(“U2”)。值)