0
假设页面呼叫者我在页面: 我点击“创建书”链接,带我到书页的创造者,当我点击开始预订创建者,它返回我主页
假设我在某个搜索结果页面: 我点击了“创建图书”链接,将我带到Book Creator页面,当我点击开始图书创建者时,它返回我搜索结果页面
您可以在链接中测试此场景
同一代码:
public class CommonItem {
Class<?> Calle
CommonItem(Class<?> Calle) {
this.calle = calle;
}
public PageX clickLink() {
return new PageX(Class<?> Calle);
}
}
public class PageA {
// WebDriver driver;
CommonItem ci;
PageA() {
ci = new CommonItem(PageA.class);
}
public PageX commonItemClick() {
PageX axp = ci.clickLink();
return axp;
}
}
public class PageB {
CommonItem ci;
PageB() {
ci = new CommonItem(PageB.class);
}
public PageX commonItemClick() {
PageX bxp = ci.clickLink();
return bxp;
}
}
public class PageX {
Class<?> calle;
PageX(Class<?> calle){
this.calle = calle;
}
public void someLink() {
// Click some Link here
// return pageA or PageB (depends on which page called this method, How to determine?)
return calle;
}
}
更新-1:上面我已经实现的建议。 现在我已经测试方法 它调用pageX.someLink()方法返回网页A或网页B,语法将
PageX xp = pageA.commonItemClick();
Class<?> caller = xp.someLink();
// how to access method of page A via caller variable ?
将一个类> callee字段添加到CommonItem类中,更改或添加另一个构造函数以获取此被调用字段的值并初始化它。所以你的PageA构造函数将会有新的CommonItem(PageA.class)行。现在CommonItem类知道哪个类创建了它的一个对象。 – Grasshopper
在问题中添加了Update-1。不确定,如何访问结果页面的方法。 –