Watir支持中文环境的修改
这几天开始针对Watir进行WEB自动化的调研.在切换支持中文,花费了竟半天时间,实在郁闷.
在网上查找了别人曾经进行支持中文的修改,由于我安装的为Watir 1.5.2,存在着些许不同,讲述一下大致的方法:
1.打开watir.rb
2.在class TextField中加入一个新的method:
def characters_in(value)
index = 0
while index < value.length
len = value[index] > 128 ? 2 : 1
yield value[index, len]
index += len
end
end
3.更改class TextField的doKeyPress( value )方法部分代码,将下面代码
-------------------------------------------
for i in 0 .. value.length-1
sleep @container.typingspeed
c = value[i,1]
@container.log " adding c.chr " + c
@o.value = @o.value.to_s + c
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
end
替换为如下代码
characters_in(value) {|c|
sleep @container.typingspeed
@o.value = @o.value.to_s + c
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
}
4.用原googleserach.rb,将ie.text_field(:name, "q").set("中文"),验证成功.
注意和网上大部分讲的方法不同的点在于:
a) 1.5.2开始firevent已经细化为:
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
代码中要做相应修改
原先没留意~~~
b) 发现网上有相当的方法
sleep @container.typingspeed
写成sleep @ieController.typingspeed
估计就是抄的是一个出处的~
由于刚装Watir,还不清楚调试环境,一直出错却没有看清,太是相当faint
在网上查找了别人曾经进行支持中文的修改,由于我安装的为Watir 1.5.2,存在着些许不同,讲述一下大致的方法:
1.打开watir.rb
2.在class TextField中加入一个新的method:
def characters_in(value)
index = 0
while index < value.length
len = value[index] > 128 ? 2 : 1
yield value[index, len]
index += len
end
end
3.更改class TextField的doKeyPress( value )方法部分代码,将下面代码
-------------------------------------------
for i in 0 .. value.length-1
sleep @container.typingspeed
c = value[i,1]
@container.log " adding c.chr " + c
@o.value = @o.value.to_s + c
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
end
替换为如下代码
characters_in(value) {|c|
sleep @container.typingspeed
@o.value = @o.value.to_s + c
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
}
4.用原googleserach.rb,将ie.text_field(:name, "q").set("中文"),验证成功.
注意和网上大部分讲的方法不同的点在于:
a) 1.5.2开始firevent已经细化为:
@o.fireEvent("onKeyDown")
@o.fireEvent("onKeyPress")
@o.fireEvent("onKeyUp")
代码中要做相应修改
原先没留意~~~
b) 发现网上有相当的方法
sleep @container.typingspeed
写成sleep @ieController.typingspeed
估计就是抄的是一个出处的~
由于刚装Watir,还不清楚调试环境,一直出错却没有看清,太是相当faint