首先,谢谢你抽出时间。
我正在自动化一个产品,在不久的将来,它将启用多语言支持,我已经设置了一个从.properties文件(English.properties、French.properties等)读取的简单资源包。
在我的pages中,我有一些@FindBy符号引用了页面上一些超链接的linkText,例如:“忘记密码”。当我们切换区域设置时,这个linkText显然会改变。
我是否放弃了这些@FindBy(linkText = "Forgot Password")定位器,并使用其他可用的东西来定位它们,这不会对语言产生影响。
有什么方法可以让我在@FindBy中提供动态内容来满足这种需求?例如:
@FindBy(linkText = (Language.getLanguage().getString("foo"))我很好奇人们在这个问题上做了什么?
尝试我的解决方案将返回以下内容:
注释属性FindBy.linkText的值必须是常量表达式。
发布于 2017-08-30 09:29:37
我不会在这里使用链接文本来查找元素,因为我假设元素应该在那里,不管语言如何。最好找一个不随语言变化的属性,比如Id或类名,并创建特定的测试用例来检查是否使用了正确的语言,
例如
@FindBy(id = "foo")
WebElement elm;
public boolean isLinkTextInCorrectLanguage(WebElement elm, String lang){
return elm.getText().contains(lang);
}发布于 2017-09-02 16:01:14
除了@Camarde之外,如果您不能轻松地使用id(例如,在Ember应用程序中),您可以使用一个根据其文本生成WebElement的工厂。
一些Page对象:
final String FORGOT_PASS_TEXT = "Forgot Password";
public text getTextFromForgotPassword() {
WebElement forgotPasswordElem = localizatedElementsFactory.findElementWithText(FORGOT_PASS_TEXT, rootElem);
return forgotPasswordElem.getText();
}localizatedElementsFactory工厂应该是这样的:
LocalizedTextRetriver loc_text_retriver = ...
public WebElement findElementWithText(text, rootElem) {
return rootElem.findElementByText(loc_text_retriver.getLocalizedText(text));
}LocalizedTextRetriver将是一个从语言中检索文本的接口。这样,您可以在运行时注入要测试的语言,所有测试都将通过localizatedElementsFactory搜索具有本地化文本的元素。
https://sqa.stackexchange.com/questions/29271
复制相似问题