0
は、私がページにいると仮定して、共通のページを持っているページの発信者を決定します 私はリンク「ブックの作成」をクリックし、私はスタートブックをクリックすると、ブック作成者のページに私を取り、作成者、それは私を返すメインページ
私はいくつかの検索結果ページにあると仮定します: 私は「ブック作成」リンクをクリックしてブッククリエイターページに移動し、ブッククリエイターの開始をクリックすると、結果ページ
このシナリオはリンクでテストできますコード内の同じ
:
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 ?
クラス>呼び出し元フィールドをCommonItemクラスに追加し、別のコンストラクタを変更または追加してこの呼び出し先フィールドの値を取得し、初期化します。そのため、PageAのクラスは新しいCommonItem(PageA.class)行を持ちます。現在CommonItemクラスは、どのクラスがそのオブジェクトを作成したかを知っています。 – Grasshopper
質問にUpdate-1を追加しました。わからない、結果ページメソッドにアクセスする方法。 –