2015-09-28 70 views
1

我是一名自動化測試開發人員,我使用硒+頁面對象模型+ Junit進行測試。這使我一個問題,在每一個測試類我聲明屬性這樣的:我如何在eclipse中創建代碼生成器,可以生成有關類屬性的代碼

By miscellaneousContainerFinder = By.cssSelector(".MISCELLANEOUS_ROW"); 
By goodbyeTextContainerFinder = By.cssSelector(".GOOD_BYE_TEXT_ROW"); 
By driversBarriersContainerFinder = By.cssSelector(".DRIVERS_BARRIERS_ROW"); 

但是更多的屬性,這些15-20。是什麼讓我頭疼的是,我需要爲每一種「通過的」簡單的方法,如:

public String getEmailComment() { 

     try { 
      return descriptionTabContainer.findElement(emailCommentFinder).getText(); 
     } catch (NoSuchElementException e) { 
      return null; 
     } 
    } 

,或者點擊,或者在WebElement類型的方法。所以我想到了eclipse可以爲屬性生成getters/setters的方式,我知道我可以編輯這些代碼的生成方式,並插入任何我想要的代碼。但是,我怎樣才能添加新的方法,指定他們的名字和返回呢?

我想要有生成類似這些方法的選項 - 生成getter/setter,生成clickMethod,生成sendKeys方法,生成getText方法。

這是可能或我在做夢嗎?

在此先感謝。

+1

難道這些屬性和方法相同爲每個測試課程?你可以考慮把它們作爲一個常用類的常量和靜態方法嗎? 然後,您可以在測試文件中添加'import static ThatHelperClass。*;'並使用常量/方法 –

+0

不幸的是它們不一樣。我需要我的方法有一個重要的名字,所以當你閱讀測試時,你知道它很容易做到。 – lucianoluz

回答

0

一個非常有趣的問題,類似的事情發生在我身上很多,這是關於我做一些事情的時間。

這裏是如何使用模板做到這一點: 轉到窗口>首選項>編輯>模板

,並創建這個模板:如果你寫一些變量

private By ${word_selection}Finder = By.cssSelector("");//TODO add selector 

public String get${word_selection}(){ 
    try { 
      return descriptionTabContainer.findElement(${word_selection}Finder).getText(); 
    } catch (NoSuchElementException e) { 
      return null; 
    } 
} 

現在,紀念它,然後單擊按Ctrl +空格選擇你的模板名稱,你會得到你的代碼。

+0

Humm,這實際上是一個很好的解決方案=) 我希望能夠聲明我所有的BYs,然後爲它們生成代碼。但是,可能需要比您提供的解決方案更多的工作,這解決了我80%的問題!謝謝=) – lucianoluz

0

您可以爲每個定位器自動生成代碼:

https://github.com/naukri-engineering/SeleniumCodeGenerator

特點:

它有助於減少/抵消重複的編碼工作,在建築頁面對象和編寫自動化代碼字段級驗證。

•易於集成(只需要Java和螞蟻)

•可以在Windows上運行,Linux和Mac OS•生成乾淨的代碼消除錯別字

This Can be enhanced/used for Selenium, Appium and Robotium etc