0

我一直在使用Ruby Selenium-Webdriver作爲我正在開發的自動化腳本之一,而且我被要求使用頁面對象,但是我們爲此使用了很多頁面對象應用程序我正在使用CSV文件,我已經在CSV文件中定義了我在應用程序中使用的所有xpath,並且我正在解析該腳本中的CSV文件以引用這些對象,我想知道是否存在在使用類來定義頁面對象或使用CSV文件而不是性能問題方面有很多不同之處?我相信從配置的角度來看,使用CSV文件將成爲我們的一個插件,並且會使維護更容易,對此有何建議?在Selenium中使用頁面對象vs配置文件

編輯 - 在我們的使用案例中,我們實際上是自動化基於雲的工具構建的應用程序,所以基本上所有的應用程序都從HTML的角度共享相同的設計結構,所以我們定義CSV格式的xpath模式,然後將某些參數傳遞給我們已經開發了一些自定義方法來自動使用CSV生成xpath,而不是爲我們手動查找這些開銷,因爲我們已經知道所有應用程序都會爲所有元素共享類似的xpath模式。

謝謝

回答

0

它完全取決於應用程序和您可能執行的測試類型。

由於它是一個自動測試腳本,您不必真正擔心腳本的性能(可能需要幾毫秒才能解析,這應該是確定的)。

維護所有元素標識屬性&在CSV文件中的相應操作將使維護更容易,並使框架應用程序獨立,這很好。但維護你的框架有點難以使它更加健壯。兩種方法都有其優點和缺點。

請參考下面的帖子[例子是在Java中 - 但你會得到的想法]:

  1. Keyword driven framework
  2. Advanced Page Objects

更新:

如果你都喜歡,你可以通過實現來輕鬆地整合這些。

@ObjectRepository(src="/login.csv") 
public class LoginPage{ 

    private Map<String, WebElement> elements; 

    public void login(){ 
     elements.get("username").sendKeys(''); 
     elements.get("password").sendKeys(''); 
     elements.get("signin").click(); 
    } 
} 

即,定義如CSV/JSON等配置文件的所有元素讓頁面對象指的是類的頁面元素。所有的方法將成爲頁面類的一部分。

+0

我同意你對這一個,如果你看看我在這個線程上編輯的編輯,你會有什麼建議?爲了給您一個概述,我們將自動化基於雲基礎工具的應用程序,以便所有應用程序從HTML的角度共享相同的基礎結構,因此我們決定使用CSV定義通用xpath模式,然後使用自定義方法將標籤傳遞給該csv如果我們爲每個應用程序定義頁面對象,那麼就會生成實際的元素xpath,因爲我們將不得不手動查找這些元素的開銷 – utkarshs

+0

@utkarshs,請參閱,如果您要大量使用並在將來保持此狀態,讓它達到你的舒適水平。看到我更新的答案。 – vins

3

我認爲,POM比CSV方法更好。在POM中,您將頁面的元素放在單獨的類文件中。所以,如果有任何改變,那麼找到更改/維護的位置就更容易了。而且,它不會像CSV文件那樣太亂,而且您不需要使用額外的實用功能來解析這些文件。

+0

實際上,我們的用例與普通的Web應用程序自動化有點不同,我們永遠不能依靠Id和元素類,因爲它們在每次刷新時都會改變,所以我們唯一的選擇是使用xpath的另一個方法就是如果我們導航到使用分區的元素對我們而言又是一個鬆散的情況,因爲只要我們將應用程序移動到不同的環境中,該元素的類也會發生變化,因此我們使用標籤導航到元素 – utkarshs

2

還有一個pageobjects gem,它提供了一組webDriver/watir以上的庫,簡化了代碼。

另外,爲什麼xpaths?它是識別元素的最後推薦方法之一。

至於框架方面,csv應該比PageObjects更像維護問題。它是文本和代碼之間的基本區別。您對PageObjects中的元素執行面向對象的方法,但這對於csv不可行。

在最好的情況下,您創建了一個列/單獨的工作表來定義xpath屬於哪個頁面。這聽起來像是一個開銷。隨着應用程序/套件的增長,可能會有數千個元素。想象一下用這種數據解析/手動更新csv。

取而代之,在PageObjects中,您的元素將被限制爲Page。對應用的任何更改也將指定哪些元素可能會受到影響。現在,當將元素定義爲PageObject中的對象而不是css時,您也不需要通過閱讀csv來顯式創建元素。

+0

我們使用xpath的原因是我們的應用程序是動態的意味着每一次頁面刷新都會改變每個元素的id,再加上我們現在正在基於雲技術進行這項工作,如果將我們的應用程序從DEV移植到UAT到PROD,那麼即使是各個分區的類別也會變化 – utkarshs

+0

我們是實際上使我們基於雲工具構建的應用程序自動化,所以就HTML而言,所有應用程序共享相同的基本結構我們無需找到基於頁面的元素,因爲結構總是相同的,因爲它是環境中的任何應用程序,這就是加速我們的腳本開發的原因,我們已經在csv中定義了xpath模式,然後在運行中生成元素的實際xpath通過將一些參數傳遞給使用這些CSV文件的自定義方法 – utkarshs

相關問題