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

原文链接: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手机缓存的更多相关文章

  1. 自动化测试系列:如何实现Selenium自动化读取H5手机缓存

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6890675.html 前言: 由于Se ...

  2. Atitit.播放系统规划新版本 and 最近版本回顾 v3  pbf.doc  1 版本11 (ing)41.1 规划h5本地缓存系列 41.2 Android版本app41.3 双类别系统,

    Atitit.播放系统规划新版本 and 最近版本回顾 v3  pbf.doc 1 版本11 (ing)4 1.1 规划h5本地缓存系列 4 1.2 Android版本app4 1.3 双类别系统, ...

  3. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

  4. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  5. Selenium自动化面试题

    (1)selenium的工作原理?        ① 脚本启动driver ② driver去驱动浏览器作为远程服务器 ③ 执行脚本发送请求 ④ 服务器解析请求作出相应操作,并返回给客户端(脚本) ( ...

  6. Python2.6.6执行selenium自动化

    系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...

  7. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  8. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  9. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

随机推荐

  1. lodash源码分析之缓存方式的选择

    每个人心里都有一团火,路过的人只看到烟. --<至爱梵高·星空之谜> 本文为读 lodash 源码的第八篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitb ...

  2. HDU 1002 A + B Problem II(高精度加法(C++/Java))

    A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. 类A是公共的,应在名为A.java的文件中声明错误

    第一种!!! “类A是公共的,应在名为A.java的文件中声明”这句话需要分两步来理解: 1.如果类A被声明为公共的(public),那么必须将类A保存在名为A.java的文件中: 2.反之,在一个文 ...

  4. 【Java学习笔记之三】java中的变量和常量

    变量和常量 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量. 在实际的程序中,可以根据 ...

  5. HDU2289-Cup-二分

    Cup Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. hdu_2669 Romantic(扩展欧几里得)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2669 Romantic Time Limit: 2000/1000 MS (Java/Others)  ...

  7. NYOJ 1248 海岛争霸(Dijkstra变形——最短路径最大权值)

    题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1248 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比 ...

  8. css background之设置图片为背景技巧

    css background之设置图片为背景技巧-css 背景 Background是什么意思,翻译过来有背景意思.同样在css里面作为css属性一成员同样是有背景意思,并且是设置背景图片.背景颜色. ...

  9. DEDE在图集列表中调出图集的所有图片[首页也适用]

    在include/common.func.php 中添加以下函数代码 代码如下:   // 在图集列表中调出图集的所有图片 function Getimgs($aid, $imgwith = 220, ...

  10. thinkphp无法加载控制器:Admin

    在使用thinkphp时,通过某入口文件访问其他非默认的模块(比如Admin模块),出现报错: 无法加载控制器:Admin 原因:入口文件(比如index.php)中定义了绑定某个具体的模块 如:de ...