zoukankan      html  css  js  c++  java
  • 自动化测试系列:如何实现Selenium自动化读取H5手机缓存

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!

     

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

    前言:

    由于Selenium本身并不包括读取H5手机缓存的封装,所以考虑使用JavascriptExecutor接口实现。

    JavascriptExecutor接口简介:

    接口声明: 
    public interface JavascriptExecutor
     
    表示驱动程序可以执行JavaScript,提供对机制的访问。
     
    由于跨域策略,浏览器强制执行脚本执行可能会意外失败,且没有足够的错误消息传递。
    这在创建自己的XHR请求或尝试访问另一个帧(frame)时特别有用。 大多数情况下在排除故障时,最好在执行WebDriver请求后查看浏览器的控制台。
     
    所有已知实施类:
     
    接口方法概览:
    接口方法一:
    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:
    HTML5 Local Storage:
    Storing Objects in HTML5 localStorage:
     
     感谢阅读,作者原创技术文章,转载请注明出处
     
  • 相关阅读:
    BZOJ2759 一个动态树好题
    BZOJ3527 力
    HDU6069 String
    HDU5069 Harry And Biological Teacher
    AC自动机初步
    HDU6155 Subsequence Count
    while与until
    RADI
    linux压缩及归档
    挂载与卸载
  • 原文地址:https://www.cnblogs.com/zishi/p/6890675.html
Copyright © 2011-2022 走看看