假设我有这样的代码结构:
public abstract class A {
// members
...
// constructor
...
// methods
protected void enterValue(By locator, String value) {
...
System.out.println("entered " + value + " into the " + locator...);
}
}
public class B extends A {
// members
private final By SEARCH_FIELD = By.id("search");
// ... other FIELD members
// constructor
...
// methods
public void searchProduct(String product) {
enterValue(SEARCH_FIELD, product);
...
}
}
entervalue(by,string)方法应该打印例如:“entered talent into the search\ u field”。
另外,我可以有与类b相同结构的其他类,它们可以调用类a方法,所以我不知道子类的类名,也不知道它将是哪个字段。
这是我用java反射或一些库可以实现的吗?
我的目标是将每个具有有意义名称的操作都记录到extentreports中。
2条答案
按热度按时间ccrfmcuu1#
正如我在评论中提到的,我会寻求一个不同的解决方案。
通常,对于类似的问题,我使用一种抽象方法:
在子类中实现:
avkwfej42#
getDeclaredFields()
的Class
给出类中所有声明的字段(public和private)。它不会返回继承的字段。您可以使用修饰符检查它是否私有。使用field.gettype()检查类型