我正在使用selenium 2.0和Java自动化Web应用程序的测试用例。我的应用程序支持多种语言一些测试用例要求我验证UI中出现的文本,如成功/错误消息等。我正在使用属性文件来存储我在测试中从UI中引用的任何文本,目前只有英文版。例如,locale_english.properties(见下文)包含所有英文引用。我将为locale_chinese.properties,locale_french.properties等不同的语言环境提供多个这样的属性文件。对于英语以外的语言环境,其对应的属性文件将具有表示本机字符的UTF-8字符(例如\ u30ed)(参见下文)。所以,如果我想测试说中文UI,我会加载“locale_chinese.properties”而不是“locale_english.properties”。我将使用JDK中的native2ascii或其他方式转换非英语语言环境的本地字符。我测试了Selenium API适用于非英语语言环境的UTF-8字符
---locale_english.properties------
user.login.error= Please verify username/password
---locale_chinese.properties------
user.login.error= \u30ed\u30ef\u30eg\u30eh\u30ed
and so on.
问题是我的locale_english.properties正在增长并且失去控制。管理一个语言环境的单个属性文件变得很困难,更不用说多个语言环境了。有没有更好的方法来处理Java中的本地化,特别是在像我这样的情况下?
谢谢!
答案 0 :(得分:1)
管理文件存在问题,你是对的,但你也是对的,这是最好的方法。有些事情很难: - (
Selenium(至少是Selenium RC API)确实支持Unicode输入和输出,我们有很多测试可以输入并确认来自C#的Cyrillic和Simple中文字符。由于Java字符串是核心的Unicode(就像C#一样),我希望你可以在一个UTF-8友好的编辑器中创建文件,比如Notepad ++,直接将它们读成字符串并直接在Selenium API中使用它们。
答案 1 :(得分:1)
这是how我为那些感兴趣的人解决了这个问题。
答案 2 :(得分:0)
数据库可以更好地工作,原因很多,例如增长,中心位置,保持在应用程序之外,可以在应用程序之外进行编辑和维护。我们使用了一个带有列的表:
id(int)自动增量 id_text - 此列和其他列是varchar ...除了最后2的日期时间 郎 翻译 由...制作 updated_by 创建日期 updated_date
id是文本的简短英文描述 - 例如'hello'或'error1msg',即地图中的关键字。
在java中有一个函数可以获取特定文本的文本...和一个应用程序级别的属性 - 默认语言(通常但很好,以保持其可配置)
函数会扫描已加载的hashmap以查找所需的语言 - 比如说“ch”
如果找不到该语言的相应翻译,我们将返回默认语言翻译,如果不是founf那么我们将返回“[”+ id“]”以便测试人员知道数据库中缺少某些东西 - 可以去到网页屏幕编辑翻译表并添加它。