Selenium自动化读取H5手机缓存

Posted William的小黑板

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:
 
 感谢阅读,作者原创技术文章,转载请注明出处
 

以上是关于Selenium自动化读取H5手机缓存的主要内容,如果未能解决你的问题,请参考以下文章

从 Apollo 缓存中读取特定类型的所有片段

chrome模拟手机浏览器python+selenium

少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案

Apollo 可以从缓存中读取部分片段吗?

第三方网站返回hybrid app H5页面缓存问题应对策略

极品代码一般人我不告诉他,手机端h5播放时不自动全屏代码