在使用VS2010的CodedUI来做自己的自动化测试框架中介绍了我将使用IronRuby作为脚本语言来编写自动化测试脚本,但是当时在使用IronRuby编写脚本过程中发现了一个编码导致的问题,在这里给大家介绍一下,大家在编写脚本时一定要主要脚本文件的编码。
我在rb文件中调用了C#的Microsoft.VisualStudio.TestTools.UITesting.dll的查找按钮并单击的功能,但是总是报错,说找不到此控件,但是我在C#代码中编写类似代码是没有问题。出现问题后上网搜索了一下,但是毕竟资源不多,没有任何结果,于是上IronRuby的codeplex网站提交了一个bug,见:encode error? 具体描述如下
I want to use VisualStudio UITest to do my auto UI test, but I don ' t find window and button.
( attachment is Microsoft.VisualStudio.TestTools.UI
Testing.dll )
code:
require " Microsoft.VisualStudio.TestTools.UITesting.dll "
include Microsoft::VisualStudio::TestTools::UITesting::WpfControls
w = WpfWindow. new
w.SearchProperties[ " Name " ] = " 你好 " ;
puts w.SearchProperties[ " Name " ]
result: 脛茫潞脙
expect : 你好
public class Application
{
public string test(string a)
{
return a;
}
}
运行后,显示的不是”你好“两个字,而是几个乱码。
我上网搜了一些和字符编码相关的内容,很多都是介绍字符编码转换的,如result = Iconv.iconv("GB2312","UTF-16",a) ,我在rb脚本和C#都试过了多个字符转换的情况,发现仍旧不能正确解析。
这时我突然想起上周遇到此问题后我给公司的一个Ruby高手请教过的这个问题,以下是邮件主要内容:
我提出了一个假设,是不是文件编码导致的?
既然提出了假设,接下来就是验证我的假设了。由于我对字符编码不熟悉,于是又上网搜索了一些,了解了以下Utf-8,GB2312等,而C#是支持Unicode的,所以我接着又试了以下几步:
再次运行后,发现竟然一切又是那么美好!
这个问题前后花了我一天时间去解决,总的来说问题相对来说不难,但是需要对Ruby的字符编码有所了解,而我以前没有注意到这个也会引起问题,从解决这个bug过程中,可以有以下几点与大家分享一下:
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]