2016-10-10 45 views
-1

我試圖用Selenium替換TestComplete進行自動化測試,理想情況下無需重新編寫所有不同的功能。創建Selenium模塊來替換testcomplete

該計劃是複製別名結構,用於查找TestComplete中的元素,並使用一個python模塊進行查找web元素。

我已經能夠得到這個工作的單個頁面,但由於Python似乎如何與導入工作,我到目前爲止一直無法找到一種方式來導入超越此。

測試完成時的示例代碼是。

Aliases.LoginPage.Username.SetText(「用戶名」)

要我創建了一個名爲別名模塊硒複製此,有一個名爲LoginPage類,包含了一個名爲username屬性。

所以Aliases.py看起來象下面這樣:

from selenium import webdriver 
    driver = webdriver.Chrome("C:\\BrowserDrivers\\chromedriver.exe") 

    class LoginPage: 
     _username = driver.find_element_by_id("txtUser") 

     @property 
     def user(self): 
      return type(self)._user 

,並通過調用:

import Aliases 

    login_page = Aliases.LoginPage() 
    login_page.username.send_keys("username") 

能正常工作只用一個頁面,但是如果我添加第二個類,這個模塊與另一個頁面上的元素的find_element代碼我得到一個「元素未發現異常」

調試顯示,這是因爲python試圖設置所有的類屬性在導入Aliases模塊時,當然不會找到登錄頁面上的元素。 即使我在Aliases模塊中指定要導入的類,也會發生這種情況。

有沒有一種方法可以讓我告訴Python只設置正在導入的類的屬性 或 另一種方法可以讓我構建項目以複製在當前編碼測試中找到元素的方式?

另外,我接近這個錯誤的方式,我應該開始修改當前的代碼,我們必須硒是特定的?

回答

1

我不知道你正在談論的更改的規模,但我的猜測是,只是重寫測試會比試圖編寫代碼更快(更好),以便您不必做出改變。從長遠來看,重寫可能需要較少的維護,並且更易於調試。所以請花時間重寫它們。大約一年前,當我們從TestComplete/Javascript切換到Selenium/Java時,我做了類似的事情。我不得不學習Java並在Selenium中重寫所有內容,但最終我對變化感到非常滿意。擁有強類型語言,更好的IDE(Eclipse)等使我的工作效率更高,測試更快速,更具彈性,並且更易於維護和調試。

+0

原帖是寫得很好的,但是,正如這個答案所述,最好重新做工作,而不是試圖從'TestComplete'遷移到'Selenium'。另外,對於具體的OP,這**是你的答案。 – Brian

+0

謝謝,這是現在採取的方法。 – lw246