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

原文链接: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. BZOJ2744: [HEOI2012]朋友圈

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2744 最大团是一个np问题.. 对于本题,做它的逆问题,建反图做最大独立集. 对于A最多取出两 ...

  2. hdu_1037(水题水疯了。。。史上最水)

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int ma ...

  3. C语言单向链表

    1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性.但数组也同样存在一些弊病.如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中 ...

  4. 【Git】Git基础操作

    repository:版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以&q ...

  5. VS2008 如何将Release版本设置可以调试的DEBUG版本

    VS2008 如何将Release版本设置可以调试的DEBUG版本 只需设置三个部分: 项目->属性->C/C++->General->Debug Information Fo ...

  6. (Release Candidate)Candidate

    RC:(Release Candidate)Candidate是候选人的意思,用在软件或者操作系统上就是候选版本

  7. spring boot项目编译出来的jar包如何更改端口号

    执行的时候更改端口即可 . java -Dserver.port=9999 -jar boot.jar

  8. Hadoop问题:chmod 0700 of directory /var/lib/apt/lists/

    问题描述: apt-get update W: chmod of directory /: Operation not permitted) E: Could not open : Permissio ...

  9. servlet入门学习之Web容器

    一.web服务器 web服务器(程序/软件) 即:www服务器或http服务器.提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.向浏览器提供服务的程序. 1.Web服务器是指 ...

  10. 利用神经网络算法的C#手写数字识别

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...