ruby 脚本编写的几个问题
上一篇 / 下一篇 2010-06-18 13:12:07 / 个人分类:Watir 查看( 47 ) / 评论( 0 ) / 评分( 0 / 0 )
问题一:ruby-oic8 gem 包版本问题。 现象:使用 ruby 一键安装包,环境安装完毕,开始写 ruby 脚本,在脚本中调用 操作数据库 数据库相关语句,使用 ruby-oci8 gem 包。语句:dbh = 数据库 DBI.connect('DBI:OCI8:database','name', 'pass
word') 调试运行后,报错:“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 元素,只能找到网址信息,无 id、class 等属性,且 Frame 框的子节点信息无法展开。参考地址:
app.daily.taobao.net/subsc/pay_confirm.htm?subsc_id=9397&;tadget_id=781 32
分析:iframe 框元素在本页中无法抓取,将 frame 框对应的网址取出,然后在新 窗口中打开。 解决方法: 通过定位 iframe 框,并获取 iframe 框 src 属性,将网址信息提取。 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 的值 dbhmit 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 的值 #获得页面 #获得数据库