java - 使用 selenium webdriver 的多语言自动化测试
问题描述
我正在开发支持多语言的自动化项目,这里的疑问是,我们有像仪表板这样的页面或任何我们将有许多字符串和文本的页面,因此验证每个测试用例中的所有文本将是如此冗长,所以会是什么最好的方式或方法。我也创建了属性文件,但仍然不知道如何一次验证多个字符串。请帮我优化测试用例。
enter code here
{ 请帮忙 }
解决方案
一般的想法是为您的元素设置参数化定位器,这些定位器将根据所选语言采用不同的值(取自 i18n 文件)。
您可以使用此库,以便以如下方式为所有语言构建一个页面对象:
import click.webelement.pagefactory.parameterized.FindByParameterized;
import click.webelement.pagefactory.parameterized.PageObjectParameterized;
import org.openqa.selenium.SearchContext;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class MyPage extends PageObjectParameterized {
@FindByParameterized(xpath = "//button[@name='{wec:btn.name}']")
WebElement button;
@FindByParameterized(xpath = "//label[text()='{wec:lbl.text}']")
WebElement label;
@FindBy(xpath = "//input")
WebElement input;
public MyPage(SearchContext searchContext) {
super(searchContext);
}
}
然后你的测试看起来像:
@DataProvider(name = "languages")
Object[][] dataProvider(){
return new Object[][]{
{"en", "Press me", "Read me"},
{"ru", "Нажми меня", "Прочти меня"}
};
}
@Test(dataProvider = "languages")
public void testPage(String language, String btnLocator, String labelLocator){
driver.get(URL + "/" + language);
DefaultParameterProvider
.properties
.set(Map.of("btn.name", btnLocator, "lbl.text", labelLocator));
MyPage myPage = new MyPage(driver);
myPage.button.click();
myPage.label.getText();
}
还有一篇文章解释了上面实现的概念的一些细节,以便您可以按照自己的方式实现它。
推荐阅读
- tableau-api - 在 tableau desktop 中为每位客户购买了最近 3 个订单中的商品
- r - 丢失数据的 LOCF 和 NOCF 方法:如何绘制数据?
- r - R - 根据最高值填充线之间的区域
- r - 如何抑制 R Shiny 的 numericInput 即时更新?
- javascript - 在href标签上使用中键拖动的方法
- node.js - Node js和Redis根据条件过滤数据
- javascript - 使用叠加层处理 Angular Click 事件
- javascript - 如何在vue js中从客户端触发推送事件?
- php - 如何在 textarea 中分析 HTML 源代码
- sql - 从日期 sql teradata 过滤去年