我是测试新手,并且有一个关于我们如何使用 Selenium 验证本地语言的问题。假设我有一些链接可以让我选择语言,那么如果我选择一种语言,我该如何验证呢?
4 回答
嗯,你可以
- 在页面上搜索该语言的标志
- 检查数字格式或时间格式(在某些语言环境中会发生变化)
- 验证某些众所周知的文本(如问候语)是否已更改。说,从
Good evening
到Dobrý večer
(那是捷克语;))
通过页面上的任何内容!假设我们的页面仅由一个元素组成,或者
<div>
It's time to kick ass and chew bubble gum!
</div>
或者
<div>
Il est temps de botter le cul et mâcher de la gomme à bulles!
</div>
然后,使用 Selenium,您可以获取元素,获取内部文本并进行验证!Java 中的示例:
// assuming driver is a good WebDriver instance
WebElement elem = driver.findElement(By.xpath("//div"));
if (elem.getText().contains("kick ass")) {
System.out.println("It's English!");
} else if (elem.getText().contains("botter le cul")) {
System.out.println("It's French!");
}
从 Java 7 开始,您甚至可以在 String 上使用 switch-case,因此您可以针对很多很多语言进行消化测试。
我们使用 l10n 的字典文件。Dictionary 是一个 xml 文件,其中的字符串存储为<string key="Cancel">Cancel</string>
. 因此,出于测试目的,我们将 all 替换</string>
为类似的内容,并将@@@</string>
所有空格替换为 '_'(可以在 notepad++ 中使用 ctrl+h 完成,例如,可以借助此答案替换空格)。然后我们在我们的网站上选择与修改过的字典相对应的语言。下一步由 Selenium IDE 脚本完成:浏览整个网站并使用 Selenium IDE 命令存储页面文本。然后解析并回显所有不以@@@结尾的单词并分析是否可以或应该翻译的单词是硬编码的。<string key="...">
</string>
storeBodyText | text
不是纯粹的自动化,但总比没有好:) 我认为这种方法不仅可以应用于 xml 字典文件,还可以应用于您用于字符串的任何存储。
PS。如果您不想执行本地化测试,但只想确保通过单击链接应用了某种语言(恐怕这正是您要查找的内容),单击链接后,您可以获得文本来自任何元素并将其与预期文本(storeText(locator, variableName)
对于 IDE)进行比较。
<!-- Using Selenium IDE -->
<tr>
<td>storeAttribute</td>
<td>//html@lang</td>
<td>language</td>
</tr>
<tr>
<td>echo</td>
<td>The label is ${language}</td>
<td></td>
</tr>