Sahi 使用技巧4-iframe、下载文件、模态框、访问不了网页的处理
2017-03-09 23:22
295 查看
这里总结了几个Sahi使用中可能经常遇到的问题
在浏览器类型里给出了一些浏览器的默认配置,可根据实际浏览器安装路径配置路径,配置的路径(path)一定要正确,否则在dashboard里不会显示对应浏览器的图标。配置文件里的 options的值最好不要修改,否则可能会出一些问题。
_lastDownloadFileName() 可以返回最后一个下载的文件名。
_saveDownloadAs($path) 可以允许你将下载的文件另存为指定的路径
_clearLastDownloadedFileName() 清除最后下载的文件名
如果页面的本意不是下载而是获取文档并显示在页面,却又被Sahi给拦截了。那么可以在 sahi/userdata/config/download_urls.txt 的配置文件里增加下载的链接来屏蔽Sahi的拦截。比如下载链接是http://www.sahitest.com/demo/testsaveas.pdf ,则可以在配置文件里添加该路径。路径的编写也支持正则表达式。
如果不想拦截所有某一种文件格式的文件,可以在 download_contenttypes.txt 配置文件里删除对应的文件格式。比如不想拦截PDF格式的文件,可以删除 application/pdf 这个来达到效果。
详细说明,可查看官网:
而回放的时候看不到模态框弹出就执行下一步了。这是因为Sahi认为这些弹框会影响自动化的执行,所以屏蔽了。但是Sahi又提供了相关的API来控制这些弹框的执行走向。比如说confirm框,Sahi默认选择OK(确定),想要弹框时选择Cancel(取消)的话,可以用_expectConfirm()方法来控制。
下面的语句就是弹框时选择Cancel。
更多相关API请戳这里。
如果通过Sahi的dashboard打开的是Firefox或者Chrome浏览器,不会产生上述的问题,因为这时候打开的这两种浏览器是使用隔离的配置文件。也就是说,这时候在Sahi外打开Firefox、Chrome、IE这些浏览器,不会通过Sahi的代理。
然而通过Sahi的dashboard打开的IE浏览器,是修改了系统的代理服务器,所有依赖系统代理的浏览器,访问网络的时候都会经过Sahi的代理。
如果这时候关闭了sahi启动时打开的命令窗口,而不是先关闭所有的IE浏览器,再关闭Sahi的dashboard,则会导致上述问题的发生。这两个操作正是回滚系统代理设置的环节。
解决的办法也很简单,就是打开Sahi后,通过Sahi dashboard打开IE浏览器,然后关闭IE浏览器,再关闭Sahi dashboard。
关于访问不了网页官方网站还有详细说明,可自行查看。地址
frame、iframe的处理
在selenium里面,跨frame或者iframe是需要用switchto这样的方法进入frame或者iframe,才能获取到在frame或者iframe里面的元素,如果要回来则还要跳回来。。。而在Sahi完全不用考虑跨frame和iframe的问题。session隔离的妙用
我们知道,一个浏览器的多个页面是共享session,一旦登录一个账号,之前登录的账号就会被替代。而通过Sahi的dashboard打开的浏览器,session是隔离的。也就是说可以通过Sahi用不同的账号登录同一个被测网站,这对我们测试不同角色账户的权限操作、交易统计等会大有益处,再也不用频繁的登录注销了。如何进行浏览器类型配置
Sahi可以通过配置来支持对不同的浏览器代理。在浏览器类型里给出了一些浏览器的默认配置,可根据实际浏览器安装路径配置路径,配置的路径(path)一定要正确,否则在dashboard里不会显示对应浏览器的图标。配置文件里的 options的值最好不要修改,否则可能会出一些问题。
页面下载的文件被拦截
在使用Sahi的时候,会发现当页面有下载文件的链接,想要下载什么文件的时候,页面闪了一下就没有了,仿佛什么都没有发生,根本无法选择下载的路径。其实这是被Sahi拦截了,Sahi为了回放的方便自动下载文件到了sahi/userdata/temp/download路径下了。这个时候如果你想操作下载的文件,可以通过三个API去处理。_lastDownloadFileName() 可以返回最后一个下载的文件名。
_saveDownloadAs($path) 可以允许你将下载的文件另存为指定的路径
_clearLastDownloadedFileName() 清除最后下载的文件名
如果页面的本意不是下载而是获取文档并显示在页面,却又被Sahi给拦截了。那么可以在 sahi/userdata/config/download_urls.txt 的配置文件里增加下载的链接来屏蔽Sahi的拦截。比如下载链接是http://www.sahitest.com/demo/testsaveas.pdf ,则可以在配置文件里添加该路径。路径的编写也支持正则表达式。
如果不想拦截所有某一种文件格式的文件,可以在 download_contenttypes.txt 配置文件里删除对应的文件格式。比如不想拦截PDF格式的文件,可以删除 application/pdf 这个来达到效果。
详细说明,可查看官网:
JavaScript模态框的处理
录制脚本的时候可能会遇到页面弹出模态框。比如说是confirm弹框,发现录制后的脚本会出现_expectConfirm()这样的函数出现。而回放的时候看不到模态框弹出就执行下一步了。这是因为Sahi认为这些弹框会影响自动化的执行,所以屏蔽了。但是Sahi又提供了相关的API来控制这些弹框的执行走向。比如说confirm框,Sahi默认选择OK(确定),想要弹框时选择Cancel(取消)的话,可以用_expectConfirm()方法来控制。
下面的语句就是弹框时选择Cancel。
_expectConfirm("/question/", false);
更多相关API请戳这里。
全局运行速度设置
Sahi里面是可以修改回放时的速度。有时候回放时为了查清脚本执行失败的原因,太快会看不清楚,可以减慢回放的速度,如果觉得回放执行时间太长,则可以加快速度。默认配置是每一步间隔100ms。可以在安装路径下的config文件下的sahi.properties里修改配置,修改后重启Sahi生效。#Time (in milliseconds) delay between steps script.time_between_steps=100
录制脚本模式java和sahi
由于Sahi支持java和JavaScript,脚本录制也提供了两种方式,可以修改成java的controller。默认是使用Sahi的controller。这个也可以在安装路径下的config文件下的sahi.properties里修改配置,修改后重启Sahi生效。# Specifies the controller to be used # Takes java, ruby and sahi as valid values; default is sahi # Set this to java for recorder in java mode. controller.mode=sahi
异常关闭Sahi后导致浏览器访问不了网页
使用Sahi有时候会遇到,Sahi关闭后,无法通过浏览器访问网络了。试了不同的浏览器也访问不了网络。原因是因为Sahi异常关闭,Sahi代理设置没有回滚导致的。我们知道,Sahi需要修改系统或者浏览器的代理设置才能注入Sahi的脚本到浏览器,以便Sahi进行录制和回放的功能。这也是Sahi为什么不用像Selenium那样下载那么多浏览器对应的webdriver的原因:通过对不同浏览器进行代理,注入JavaScript的脚本来操作浏览器行为。 这是Sahi的优势,同样也造就了Sahi会出现没有成功回滚代理设置而导致无法上网的问题。如果通过Sahi的dashboard打开的是Firefox或者Chrome浏览器,不会产生上述的问题,因为这时候打开的这两种浏览器是使用隔离的配置文件。也就是说,这时候在Sahi外打开Firefox、Chrome、IE这些浏览器,不会通过Sahi的代理。
然而通过Sahi的dashboard打开的IE浏览器,是修改了系统的代理服务器,所有依赖系统代理的浏览器,访问网络的时候都会经过Sahi的代理。
如果这时候关闭了sahi启动时打开的命令窗口,而不是先关闭所有的IE浏览器,再关闭Sahi的dashboard,则会导致上述问题的发生。这两个操作正是回滚系统代理设置的环节。
解决的办法也很简单,就是打开Sahi后,通过Sahi dashboard打开IE浏览器,然后关闭IE浏览器,再关闭Sahi dashboard。
关于访问不了网页官方网站还有详细说明,可自行查看。地址
相关文章推荐
- c#使用线程下载文件的控制技巧和缺陷
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(一):JspSmart之upload组件源码及使用
- 使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
- 使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
- 下载的chm文件打不开,总是显示已取消到该网页的导航。 问如何处理
- 使用python和java两种方式来完成下载网页,并保存成文件,
- Asp.Net中用iframe解决模态窗口文件下载问题(转)
- window xp 使用SecureCRT上传和下载文件 && 中文乱码处理
- ubuntu apache 配置 访问php网页弹出php文件下载(转)
- 典型 使用servlet下载文件(缓存处理)
- 使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
- 使用BHO技术检测IE在浏览网页时下载到IE cache中的文件
- 使用EditPlus技巧,提高工作效率(自动完成文件、语法文件下载)
- 使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(二):jspSmartUpload上传下载全攻略(ZZ)
- 下载指定代理文件调用IE使用代理访问指定网站的代码
- 使用EditPlus技巧,提高工作效率(附英文版、自动完成文件、语法文件下载)
- 如何使用wget批量下载或递归下载网页中的所有文件
- Java下载文件时处理中文 使用URLEncoder编码后 空格变+号的问题
- 使用Python访问并下载网页内容