watir更改winole默认编码的方式

今天遇到的问题:当直接用如下assert的代码进行断言检查时,会报不兼容的字符编码的错误。

# encoding: GBK

require 'watir'
require 'test/unit'

 

class TC_login < Test::Unit::TestCase
    def setup
        puts "starting a testcase..."
    end

    def test_01_login
    #使用ie
    @ie=Watir::Browser.new
    #login
    @ie.goto("http://www.fenbi.com")
    @ie.text_field(:id,"formview0_email").set("XXXX")
    @ie.text_field(:id,"formview0_password").set("XXXX")
    @ie.button(:type,"submit").click
    #判断是否登录成功check_text="我的首页"
    assert(@ie.text.include?"我的首页")
    @ie.link(:class,"XXX").fire_event("onmouseover")
    #点击弹出的tips中的选项
    @ie.link(:class,"logout").click
    @ie.close
    end
end

代码:        assert(@ie.text.include?"我的首页")

错误输出: Encoding::CompatibilityError: incompatible character encodings: UTF-8 and GBK

当时疑惑的是我已经在顶部注明了# encoding: GBK,为什么还会提示说这是不兼容的字符编码?后来在网上查了一些信息才知道watir在执行时是通过winole这个工具来获得ie的控制权及ie的众多属性,在获取ie中页面的文字时,winole会将页面中文本转成代码中字符串,而winole默认的文字编码方式是utf8,自然就提示不兼容了。

于是在ruby的目录下找到win32ole的文件,修改默认文件编码方式是以GBK编码即可,也可根据实际情况调整这两个选项,如下。

require 'win32ole' 

#以utf8编码页面文字  

WIN32OLE.codepage = WIN32OLE::CP_UTF8  

#以gbk编码页面文字  

WIN32OLE.codepage = WIN32OLE::CP_ACP  

posted @ 2012-11-30 15:17  嬭茶  阅读(319)  评论(0编辑  收藏  举报