2016-07-08 81 views
1

我目前使用Selenium來編寫一些自動化測試。我在使用Dynamic Objects的一頁上遇到了問題,並試圖將它們存儲在PageObject中。動態添加獨特風格的ID到我的PageObject類

我希望你可以嘗試一些建議。

我目前遇到的問題是,在「開發預測」頁面上,我們有一個基於Plays的數字動態創建的網格,然後再將其細分爲SubPlays作爲附加圖像。

中的所有對象都有一個獨特的風格ID,例如divPlayBar_0Play1,和divPlayBar_1Play2toggleAssetVisibility_0_ 0或toggleAssetVisibility_0_1SubPlays,並且單個元件是rigs_0_0_0rigs_0_1_2其通過Play#索引,SubPlay#,和Column#

我正試圖找到一種方法將這些動態添加到我的PageObject類。如果您有任何建議,我將不勝感激。

我在C#中編碼這個,但如果這是你使用的,可以從Java轉換。

+0

哪裏是你引用的圖像@SanjeevMenon? –

+0

我對這類事情的典型做法是爲Play和SubPlay對象創建新的類。 「開發預測」頁面將有方法來查找特定的Play或頁面上現有Plays的列表,該列表可以創建Play對象的實例,該實例包含SubPlay對象的實例。 –

回答

0

我建議你不要試圖將它們全部存儲在一個頁面對象中,而是提供一種方法來獲取你想要的。將它們全部存儲不僅需要大量時間來刮掉整個頁面,因爲可能只有一些您需要的對象,它更可能導致StaleElementException錯誤,因爲在您獲取導致您必須再次獲取一切...需要更多時間。我會做下面的事情。

這些都是頁面對象內的方法,例如,網格或其他。你可能需要調整名字......我不知道該給他們打電話,因爲看不到我看不到的頁面。 :)

public IWebElement getPlay(String playId) 
{ 
    return driver.FindElement(By.Id("divPlayBar_" + playId)); 
} 
public IWebElement getSubPlay(String playId, String subPlayId) 
{ 
    return driver.FindElement(By.Id("toggleAssetVisibility_" + playId + "_" + subPlayId)); 
} 
public IWebElement getRig(String playId, String subPlayId, String columnNo) 
{ 
    return driver.FindElement(By.Id("rigs_" + playId + "_" + subPlayId + "_" + columnNo)); 
}