2016-10-10 6 views
-1

私は自動テストのためにTestCompleteをSeleniumに置き換えようとしています。理想的には、すべての異なる関数を書き直す必要はありません。testcompleteを置き換えるためのSeleniumモジュールの作成

Web要素の検索を行うためにドロップ可能なPythonモジュールで、TestComplete内の要素を検索するためのエイリアス構造を複製する予定です。

私はこれを単一のページで動作させることができましたが、これまでにインポートでPythonがどのように動作するようになったかで、これまで以上にインポートする方法を見つけることができませんでした。

テスト完了のサンプルコードは次のとおりです。

Aliases.LoginPage.Username.SetText(「ユーザ名」)

私は、ユーザー名と呼ばれるプロパティを含む、LoginPageというクラスで、エイリアスと呼ばれるモジュールを作成したセレンでこれを複製します。

ので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 

とによって呼び出されます。これは私がこのモジュールに2つ目のクラスを追加しかし場合は、1ページだけで正常に動作します

import Aliases 

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

別のページの要素のfind_elementコードで "要素が見つかりません"例外が発生する

デバッグでは、これはPythonがすべてのクラスプロパティを設定しようとしていることを示していますエイリアスモジュールをインポートすると、ログインページにない要素が見つからないことになります。 これは、インポートするエイリアスモジュール内でクラスを指定した場合でも発生します。

私は、インポートするクラスのプロパティを設定するようにPythonに指示する方法はありますか または 私は現在のコード化されたテスト内で見つかっている方法の要素を複製するためにプロジェクトを構造化する別の方法はありますか?

また、私はこれを間違った方法で近づけていますが、現在のコードを修正する必要があります。私たちはセレンの特定でなければなりませんか?

答えて

1

あなたが話している変更の規模はわかりませんが、テストを書き直すだけでテストを書き直すよりも速く変更を加える。長期的には、書き換えはメンテナンスの必要性が低くなり、デバッグが容易になるでしょう。時間をかけて正しく書き直してください。 1年前にTestComplete/JavascriptからSelenium/Javaに切り替えたとき、私はこのようなことをしました。私はJavaを学び、セレンのすべてを書き直さなければなりませんでしたが、結局私はその変更に本当に満足しています。強く型付けされた言語、優れたIDE(Eclipse)などを使用することで、生産性が向上し、テストはより速く、より弾力性があり、保守とデバッグが容易になりました。

+0

元の投稿はよく書かれていましたが、この回答によれば、 'TestComplete'から' Selenium'に移行しようとするのではなく、単に仕事をやり直すのが最もよいでしょう。また、特にOPには、** **あなたの答えです。 – Brian

+0

ありがとう、これは今取られているアプローチです。 – lw246

関連する問題