2014-12-27 65 views
-2

我有一個簡單的問題。我相信我們中的很多人可能會遇到同樣的情況。我正在使用頁面對象模式。以下是我沿着導航進行的步驟。selenium頁面出廠處理不同用戶對同一頁面的不同元素對於不同的用戶

  1. 以一種類型的用戶身份登錄我的應用程序。
  2. 點擊鏈接進入表格頁面。
  3. 在形式頁面上,填充字段和提交
  4. 註銷

在3)的形式的對象頁面顯示了一些不同的輸入字段取決於用戶,這我需要與之交互的類型。那麼我如何在同一個頁面對象中處理它呢?有沒有人進入相同的情況,並找到了一些體面的方式來做到這一點?

+0

會有一些類型的客戶,對不對?例如,金牌特權,銀牌特權,銅牌......等等。 – Sighil 2014-12-27 18:34:03

+0

是的,用戶(或客戶)屬於區分它們的不同組。 – 2014-12-27 20:03:49

回答

0

我知道這一個簡單的自動化腳本,我們應該使用所有OOPS概念,但我仍然會用下面去不是一個Java項目:

  1. 創建包含公共WebElements和方法父頁面類。

  2. 使用特定於該客戶的元素和方法創建子類。

  3. 在測試中,傳遞一個指定客戶類型的參數並調用相應的子類。

如果你不想要任何這種繼承的東西,你也可以嘗試以下。

  1. 爲所有類型的客戶創建一個包含元素的頁面類。

  2. 創建通用方法,可以接受參數customerType並執行操作,如果customerType == 1執行這些操作,否則執行這些操作。

假設某個特定客戶的所有領域都是強制性的,我腦海中浮現的另一個解決方案如下。

  1. 爲所有元素創建一個通用類。

  2. 在條件之後的頁面類中創建一個通用方法,如果該元素存在,則輸入值。

+0

我更喜歡繼承部分。但是我有一個問題。假設有25個團隊(將來會有更多團隊),我最終會爲每個恐懼組編寫25個子類;)。我在想如果我們可以爲特定頁面動態地提供元素定位器。 – 2014-12-27 20:47:08

+0

我不知道如何提供動態值元素定位器是可能的。但我增加了另一種解決方案。 – Sighil 2014-12-27 21:00:41

0

如果你理解了頁面對象模型的概念,那麼這個問題將更加清晰。是的,繼承是一個很重要的因素。我建議你閱讀this來看看一個真正的頁面對象模型應該如何工作。而且,#3問題的解決方案與UI映射一樣簡單。類似

@FindBy(how = How.NAME, using = "q") 
private WebElement searchBox; 

對於每個元素或類似的實現。

對於完整的頁面對象,您應該映射所有不依賴於用戶的所有elements。原因是,每次調用該類時,它都將被實例化,並且所有映射的元素也將被實例化。沒有必要動態加載元素如果頁面上沒有使用或隱藏任何元素,那麼這些元素將可用並且您將不會使用它們

+0

我同意你說,當實例化頁面對象時,它不應該依賴於用戶,但我想我可能還需要在我的fillform函數中檢查它是否顯示元素,否則我將得到元素未找到異常元素爲一個用戶而不是另一個用戶。 – 2014-12-30 22:04:52

+0

你完全錯過了我的觀點!假設用戶'manager'應該看到'filedA'和'fieldB',用戶'employee'只能看到'fieldA'。你仍然需要映射'filedA'和'filedB'。如果您以管理員身份登錄並使用這兩個字段,您將不會收到任何以'employee'身份登錄的異常,如果您嘗試訪問'filedA',您將會得到例外。您在這裏不需要任何額外的支票。 – Saifur 2014-12-30 23:50:33

相關問題