测试的那些事

ruby脚本编写的几个问题

上一篇 / 下一篇  2010-06-18 13:12:07 / 个人分类:Watir

问题一:ruby-oic8 gem包版本问题。

现象:使用ruby一键安装包,环境安装完毕,开始写ruby脚本,在脚本中调用操作数据库相关语句,使用ruby-oci8 gem包。语句:dbh = DBI.connect('DBI:OCI8:database','name', 'password')

调试运行后,报错:“Unable to load driver ‘oci8’(DBI:Interface Error)

解决方法:

ruby-oci8 gem包版本降低 1.0.4降为1.0.3

1.      卸载gem gem unstill ruby-oci8

2.      安装1.0.3版本gem gem install ruby-oci8-1.0.3-XXXX

 

问题二:虚拟机无法登录CRM的问题

现象:登录CRM系统后,页面又自动跳转到淘宝的登录页面

原因:查看虚拟机上Internet选项局域网设置代理服务器。浏览器设置了使用代理服务器,导致无法访问内网。

解决方法:

方法1.将虚拟机设置为:不使用代理服务器

方法2.将后台CRM网址输入到不需要代理服务器列表(如图)

 

 

问题三:虚拟机中跑脚本时无法使用get_frame()函数的问题

现象:虚拟机中跑脚本遇到get_frame()语句,提示无法找到元素。

解决方法:

internet选项安全受信任的站点设置中测试页面网址加入到受信任站点。

 

问题四:iframe框跨域定位问题

现象:在网页中存在一个跨域的iframe元素,只能找到网址信息,无idclass等属性,且Frame框的子节点信息无法展开。参考地址:http://app.daily.taobao.net/subsc/pay_confirm.htm?subsc_id=9397&tadget_id=78132

 

 

 

分析:iframe框元素在本页中无法抓取,将frame框对应的网址取出,然后在新窗口中打开。

解决方法:

通过定位iframe框,并获取iframesrc属性,将网址信息提取。

element = @ie.locate_tagged_element("iframe","src",/pay.daily.taobao.net/)

url = element.getAttribute("src")

@ie.goto(url) 

 

问题五:TD事务如何调用问题

现象:在脚本实现中部分脚本需要清楚缓存操作。若从页面上去实现调用TD事务的方法,会出现几个问题:1.成本高,需要多写页面的脚本。2.不稳定,若TD页面打开出现问题,将会使事务调用失败。

解决方法:

TD银行考虑周到,已经为ruby脚本预留了调用接口。脚本中可以直接调用接口函数。common\interaction.rb中封装了一个函数,用来调用TD银行的接口。

invoke_tdbank(service,action,*params)

举例:invoke_tdbank("TdUser","Cleancache","test101")   #清楚用户缓存

具体方法参考:《最新ruby自动化脚本调用TD银行接口.docx

 

问题六:数据库字段值与页面取值对比问题

现象:页面上取值和数据库字段取值后打印,显示相同的值,但是在脚本中比较两者的值时却显示为不相等。

分析:脚本中比较两者的值时,需要有相同的字符类型。char型和int型两者内容虽相同,但是类型不同,所以比较时,结果为不相等。

解决方法:将页面取值和数据库取值转化为相同类型。

例如:

 

 

 

                                            #以下部分校验页面Appkey显示是否与数据库一致
    dbh = DBI.connect('DBI:OCI8:Database','XXXX', 'XXXX')
    rs = dbh.execute("select appkey from table where isv_id = '#{USER_ID1}' and title = '#{APPNAME}'")
    appkey_db = rs.fetch[0]
    appkey_db = appkey_db.to_i                            #获得数据库Appkey的值
    dbh.commit
    dbh.disconnect

    @ie = @ie.div(:class,"box app-info-box")
    @ie = @ie.li(:index,4)
    appkey_page = @ie.span(:index,1).text.to_i            #获得页面Appkey的值

 


TAG: Ruby Watir watir ruby

 

评分:0

我来说两句

Open Toolbar