1. 程式人生 > >Selenium自動化讀取H5手機緩存

Selenium自動化讀取H5手機緩存

-o intern tor 包含 clas 返回值 必須 手機 緩存

原文鏈接:http://www.cnblogs.com/zishi/p/6890675.html

前言:

由於Selenium本身並不包括讀取H5手機緩存的封裝,所以考慮使用JavascriptExecutor接口實現。

JavascriptExecutor接口簡介:

接口聲明: public interface JavascriptExecutor 表示驅動程序可以執行JavaScript,提供對機制的訪問。 由於跨域策略,瀏覽器強制執行腳本執行可能會意外失敗,且沒有足夠的錯誤消息傳遞。 這在創建自己的XHR請求或嘗試訪問另一個幀(frame)時特別有用。 大多數情況下在排除故障時,最好在執行WebDriver請求後查看瀏覽器的控制臺。
所有已知實施類: ChromeDriver, EdgeDriver, EventFiringWebDriver, FirefoxDriver, InternetExplorerDriver, OperaDriver, RemoteWebDriver, SafariDriver 接口方法概覽: 接口方法一: executeAsyncScript(java.lang.String script, java.lang.Object... args) 方法概述:在當前選定的框架或窗口的上下文中執行異步JavaScript。 接口方法二: executeScript(java.lang.String script, java.lang.Object... args)
方法概述: 在當前選定的框架或窗口的上下文中執行JavaScript。 在當前選定的框架或窗口的上下文中執行JavaScript。 提供的腳本片段將作為匿名函數的主體執行。在腳本中,使用文檔來引用當前文檔。 請註意,腳本完成執行後,盡管全局變量將持續存在,但局部變量將不可用。 如果腳本具有返回值(即如果腳本包含返回語句),則將執行以下步驟:
  • 對於HTML元素,此方法返回WebElement
  • 對於十進制,返回Double
  • 對於非十進制數,返回Long
  • 對於一個布爾值,返回一個布爾值
  • 對於所有其他情況,返回一個String
  • 對於一個數組,返回一個List <Object>,每個對象遵循上面的規則。 我們支持嵌套列表。
  • 除非值為空或沒有返回值,否則返回null
參數必須是數字,布爾值,String,WebElement或以上任何組合的列表。 如果參數不符合這些條件,將拋出異常。 這些參數將通過“參數”魔術變量提供給JavaScript,就像通過“Function.apply”調用函數一樣。 參數:
腳本 - 要執行的JavaScript
args - 腳本的參數。 可能是空的
返回:
Boolean,Long,Double,String,List或WebElement之一。 或空。 實戰Demo: 如何用JavascriptExecutor 讀取手機LocalStorge鍵值(節選主要實現代碼)
//註:storagename是期望讀取的LocalStorge鍵值
//public interface IWebDriver    Member of OpenQA.Selenium
public static string GetLocalStorgeKey( IWebDriver driver, string storagename)
        {
            string js = "return window.localStorage.getItem(‘" + storagename + "‘);";
            IJavaScriptExecutor jse = (IJavaScriptExecutor )driver;
            return (String )jse.ExecuteScript(js);
        }

類似的寫緩存操作應該調用setItem方法:localStorage.setItem(‘testObject‘, ‘abc‘);

偽代碼(未調試)就應該如下:(註:此處set方法不需要返回值)

stringjs ="window.localStorage.setItem(‘"+ storagename +"‘,‘"+ storagevalue +"‘);";
IJavaScriptExecutor jse = (IJavaScriptExecutor )driver;
jse.ExecuteScript(js);

主要參考文獻: JavascriptExecutor: http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html HTML5 Local Storage: https://www.w3schools.com/html/html5_webstorage.asp Storing Objects in HTML5 localStorage: http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage 作者原創技術文章,轉載請註明出處

Selenium自動化讀取H5手機緩存