Selenium Webdriver 中的 executeScript 使用方法


1.使用executeScript 返回一個WebElement .

  下例中我們將一個瀏覽器中的JavaScript 對象返回到客戶端(C#,JAVA,Python等)。

IWebElement element = (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return $('.cheese')[0]");

 

 

2.使用executeScript 和參數組合返回一個WebElement列表。

  下例中我們將客戶端中的一個 IList<IWebElement> 對象傳遞到 瀏覽器中作為一個 JaveScript 對象使用。

 

IList<IWebElement> labels = driver.FindElements(By.TagName("label")); IList<IWebElement> inputs = (IList<IWebElement>) ((IJavaScriptExecutor)driver).ExecuteScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +
    "inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);

 

函數詳細解釋:

//
// Summary:
// Executes JavaScript in the context of the currently selected frame or window.
//
// Parameters:
// script:
// The JavaScript code to execute.
//
// args:
// The arguments to the script.
//
// Returns:
// The value returned by the script.
//
// Remarks:
// The OpenQA.Selenium.IJavaScriptExecutor.ExecuteScript(System.String,System.Object[])method
// executes JavaScript in the context of the currently selected frame or window.
// This means that "document" will refer to the current document. If the script
// has a return value, then the following steps will be taken:
// For an HTML element, this method returns a OpenQA.Selenium.IWebElement For a
// number, a System.Int64 is returned For a boolean, a System.Boolean is returned
// For all other cases a System.String is returned. For an array,we check the first
// element, and attempt to return a System.Collections.Generic.List`1 of that type,
// following the rules above. Nested lists are not supported. If the value is null
// or there is no return value, null is returned.
// Arguments must be a number (which will be converted to a System.Int64), a System.Boolean,
// a System.String or a OpenQA.Selenium.IWebElement. An exception will be thrown
// if the arguments do not meet these criteria. The arguments will be made available
// to the JavaScript via the "arguments" magic variable, as if the function were
// called via "Function.apply"

object ExecuteScript(string script, params object[] args);

翻譯一下 :

1.作用域:當前frame 或 window ,如果是在frame下執行,應該受到frame 的范圍影響。

2.返回值:我們客戶端以C#為例

JavaScript c#
HTML element OpenQA.Selenium.IWebElement
number System.Int64
boolean System.Boolean
其它類型 System.String
array 檢查第一個元素,嘗試轉換為System.Collections.Generic.List`1 
null null
沒有返回 null
Nested lists  不支持

 

 

 

 

 

 

 

 

3.參數:

C# JavaScript
OpenQA.Selenium.IWebElement HTML element
System.Int64 number
System.Boolean boolean
System.String string
其它類型  thrown exception

 

 

 

 

 

其他


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM