簡體   English   中英

當通過 Selenium WebDriver 使用來自 JavascriptExecutor 接口的 executeScript 方法時,arguments[0] 和 arguments[1] 是什么意思?

[英]What does arguments[0] and arguments[1] mean when using executeScript method from JavascriptExecutor interface through Selenium WebDriver?

當通過 Selenium WebDriver 使用來自JavascriptExecutor接口的executeScript()方法時, arguments[0]arguments[1]是什么意思,以及下面代碼中arguments[0]的目的是什么。

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

JavascriptExecutor接口中的executeScript()方法可以調用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); 
  • 同樣,具有多個arguments []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']被稱為arguments [0]
    • “ 0”稱為自變量[1]

通過Selenium和Python通過WebDriver實例調用execute_script()方法的同時,您可以在“ 什么是參數[0]”中找到相關的討論

對於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)產生的任何driver.findElement(locator)傳遞。

因此, arguments[0]是您訪問匿名函數的第一個參數的方式,而對arguments[1]的訪問方式相同

這是使用參數 [0] 和參數 [2] 的工作示例:

objIE.ExecuteScript "arguments[0].value = arguments[1]", Array(objIE.FindElementById("sqlvalue1"), Sheets("SheetName").Range("U2").Value)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM