我正在爲具有非常標準頁面的應用程序編寫硒測試,該頁面可以輕鬆地由泛型結構作爲頁面基礎進行建模,只有少數幾種基本類型主要是包含記錄列表的列表頁面,以及編輯一個可以編輯一條記錄的頁面)。爲了模擬這個我有這兩個類:使用抽象方法提供特定返回值的未經檢查的轉換警告
public abstract class AbstractListPage<E extends EditPage> extends AbstractSelfOpeningPage implements ListPage {
// Provides the specific object for the edit page when it's opened
protected abstract E editPageHook();
public E getEditPage() {
return editPageHook();
}
public E openEditPage(String key, boolean search) {
//Do page opening stuff like clicking buttons
// Return new object for the page that has been opened
return getEditPage();
}
}
// Implementation class
public class DossiersListPage extends AbstractListPage<DossierPage> {
@Override
protected DossierPage<DossiersListPage> editPageHook() {
return new DossierPage<>(driver, this);
}
}
// Usage in test, this shows an unchecked cast warning
DossierPage<DossiersListPage> dossierPage = new DossiersListPage(driver).openPage().openEditPage("3905");
我想知道是否有解決這個問題的好辦法,而且我缺少什麼?目前我沒有任何問題,但是我的測試代碼中的警告讓我感到有點不安。
之所以這裏的仿製藥是這樣我可以模擬返回他們屬於一個流暢的方式在頁面我的頁面上的元素:
public abstract class AbstractPageElement<P extends Page> implements PageElement<P> {
@Override
public P click() throws TimeoutException {
// Do click
return page;
}
}
// DossierPage
public class DossierPage<L extends ListPage> extends AbstractEditPage<L> {
public OrderDate<DossierPage<L>> orderDate = new OrderDate<>(driver, this);
public OrderType<DossierPage<L>> orderType = new OrderType<>(driver, this);
public Status<DossierPage<L>> status = new Status<>(driver, this);
}
// Test
dossierPage.orderDate.click()
.orderType.click()
.status.click();
DossiersPage是帶有檔案列表的頁面,DossierPage是一個單一的檔案。也許命名有點混亂,當你不習慣它。 – Mobrockers
你能說明'DossierPage'是如何聲明的嗎?我認爲這將是棘手的部分。 –
我已經添加了DossierPage類標題,你還需要其他什麼嗎? – Mobrockers