我有2个组件类
OrderDetailsSite1.java
OrderDetailsSite2.java
我有一个bean类,用于存储购物车详细信息
现在,我必须创建一个通用方法,在该方法中,我必须传递Component类Object并将其值与bean类数据进行比较。
代码试用版:
public void validateProductDetails(Object obj) {
OrderDetailBean bean = (OrderDetailBean) ConfigurationManager.getBundle().getObject("order_details");
OrderDetailsSite1 comp=null;
if (obj instanceof OrderDetailsSite1) {
comp = (OrderDetailsSite1) obj;
}
for (int i = 0; i < bean.getProductName().size(); i++) {
assertResult( comp.getProductList().get(i).getProductName().getText(), bean.getProductName().get(i));
assertResult( comp.getProductList().get(i).getProductQuantity().getText(), bean.getProductQuantity().get(i));
assertResult( comp.getProductList().get(i).getProductUnitPrice().getText(), bean.getProductUnitprice().get(i));
assertResult(comp.getProductList().get(i).getProductSubtotal().getText(), bean.getProductSubtotal().get(i));
}
}
我为组件1所做的代码,但对于组件2我需要重复相同的代码吗?还是有任何规定可以有效地做到这一点
已编辑
我正在使用selenium,并且在两个类中都创建了相同的变量和方法名,但是两者的定位符不同。使用超类概念可以做同样的事情吗?
OrderDetailsSite1.java
@FindBy(locator = "magento.ordered.item.name")
private QAFWebElement productName;
@FindBy(locator = "magento.ordered.item.quantity")
private QAFWebElement productQuantity;
@FindBy(locator = "magento.ordered.item.price")
private QAFWebElement productUnitPrice;
@FindBy(locator = "magento.ordered.item.subtotal")
private QAFWebElement productSubtotal;
OrderDetailsSite2.java
@FindBy(locator = "order.detail.product.name")
private QAFWebElement productName;
@FindBy(locator = "order.detail.product.uprice")
private QAFWebElement productUnitPrice;
@FindBy(locator = "order.detail.product.quantity")
private QAFWebElement productQuantity;
@FindBy(locator = "order.detail.product.subtotal")
private QAFWebElement productSubtotal;
两个类中的方法名称相同。
答案 0 :(得分:0)
制作Components接口并实现它的组件类
interface Components{
...// declare all methods of your components like getProductList() etc
...
}
public void validateProductDetails(Components comp) {
OrderDetailBean bean = (OrderDetailBean) ConfigurationManager.getBundle().getObject("order_details");
for (int i = 0; i < bean.getProductName().size(); i++) {
assertResult( comp.getProductList().get(i).getProductName().getText(), bean.getProductName().get(i));
assertResult( comp.getProductList().get(i).getProductQuantity().getText(), bean.getProductQuantity().get(i));
assertResult( comp.getProductList().get(i).getProductUnitPrice().getText(), bean.getProductUnitprice().get(i));
assertResult(comp.getProductList().get(i).getProductSubtotal().getText(), bean.getProductSubtotal().get(i));
}
}
答案 1 :(得分:0)
编辑,来自更新的问题
从上面的代码中,我将使用这种方法。
创建一个界面,该界面将为您的订单详细信息网站提供通用的api。
entry: ['babel-polyfill', './src/index.js']
两个类都应实现您的接口
public interface class OrderDetailsComponent{
private QAFWebElement productQuantity;
private QAFWebElement productQuantity;
private QAFWebElement productUnitPrice;
private QAFWebElement productSubtotal;
}