Selenium自动化读取H5手机缓存

原文链接: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

作者原创技术文章,转载请注明出处

时间: 2024-10-11 08:21:45

Selenium自动化读取H5手机缓存的相关文章

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

H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年12月10日 感谢 腾讯课堂NEXT学院 赞助本站,腾讯官方的前端课程 免费试学. 手机现在是互联网的最大入口.根据<中国互联网报告>,手机网民已经超过8亿,人均每天上网三个多小时. 毫不奇怪,手机应用软件(mobile application,简称 mobile App)的开发工程师供不应求,一

关于selenium自动化测试数据的管理---测试用例管理---jxl,POI

标 准 选择朋友是结交之前要办的第一件事.选择朋友的标准是什么?当然是与志向远大的人交友,与兴趣相投的人交友,与见识广博的人交友,与正直的人交友,与诚信的人交友.近朱者赤,近墨者黑.交上益友,一生幸福;交上损友,一生祸害. selenium 多数被应用于功能测试(冒烟测试).流程测试.回归测试,这里要说的就是在执行这些测试的时候,测试用例的管理问题. 常见的黑盒测试方法分为:边界值分析.等价类划分.因果图.错误推测...这里不都一一举例,作者有一篇文章里画了一张图,是专门详解常用的测试方法的.总

Python+Selenium自动化模拟用户登录(备注:记录一次强行卸载rpm依赖包,引发的rpm、yum等命令异常,无法远程xftp工具)

近期在摸索Python+Selenium自动化,实现模拟用户登录搜索等操作,反馈相关日志,再交由Zabbix分析,监控页面访问是否正常. 期间需要对Linux火狐浏览器进行升级,由于生产环境为内网环境,无法使用yum进行升级.本想在外网环境下使用Docker进行安装,然后打成镜像后迁移到内网环境.但由于系统为Red Hat 6.4对Docker支持较差,故在外网将相关依赖包下载后进行安装. 外网环境下,下载Firefox及相关依赖组件相关操作.         1.更新本地yum源为阿里yum源

Python+selenium自动化公共逻辑步骤封装

开篇 个人博客"Python+selenium的GUI自动化实现"提到的chrome与IE浏览器调用插件已上传至51CTO下载,对应链接分别为:chrome,http://down.51cto.com/data/2171584:IE,http://down.51cto.com/data/2171585:有需要的直接下载即可:  正文 关于自动化,其实质就是用机器操作代替手工执行,从而减少人力投入.节约项目运营成功.优秀的自动化框架,可能的一个发展过程,前期自动化用例写作实现过程,可能需

Python2.6.6执行selenium自动化

系统类型: [[email protected] home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux Python版本: [[email protected] home]# python -VPython 2.6.6 安装并配置vnc-server: [[email protected] home]# rpm -ivh

如何写好Python+Selenium自动化?

哈喽,各位客官好,今天我给大家讲讲如何使用Python+Selenium做自动化测试,楼主在做开发测试之前做得java开发,由于种种原因,楼主转成了开发测试,接着又自学了脚本语言linux和python,对于这两门脚本,我是非常的喜欢,为什么呢,因为用起来效率太高了,所以楼主弃java转python,至于为什么,不做多解释,你懂得.接下来我将给各位讲讲如何用python+selenium自动化 1,什么是selenium selenium是一个开源的自动化测试框架,主要适用WEB测试,可以支持多

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

Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: 1 /** 2 * Get Object of return from js 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoSeleniumDemo main.aaron.sele.core SeleniumCore.java execJSR, 2015-8-9

搭建Python开发环境(含Selenium自动化部署)

a.从Python官网下载 Python2.7https://www.python.org/b.安装Python2.7时选择勾上pip和自动配置环境变量(默认Python安装路径C:\Python27),若未自动配置环境变量,手动配置也可c.确定Python和pip安装成功后(命令行下输入python进入python交互式环境>>>),附安装第三方模块PIL的方法 pip install PIL提示出错,因为PIL官方只支持32位,没有提供64位版本可以安装非官方模块Pillow代替,p

Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅

转载请注明出处http://blog.csdn.net/xiaanming/article/details/9825113 异步加载图片的例子,网上也比较多,大部分用了HashMap<String, SoftReference<Drawable>> imageCache ,但是现在已经不再推荐使用这种方式了,因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠.另外,Android 3.0