2016-03-22 19 views
-1

私はjava + TestNGフレームワークでSelenium web-driverを使用していますが、私は仕事を譲りましたが、Ruby + Selenium Webドライバとページオブジェクトモデルを使用しています。私はGoogleを検索し、始める前に読めるようにいくつかのリソースを集めましたが、私は練習したいと思います。私の理解から、私は完全に間違っているかもしれませんが、ページオブジェクトモデルでは、実際のオブジェクトと同じプロパティを保持する別のクラスにオブジェクトを作成し、それらのオブジェクトに対してテストするためにテストコードで別のクラスを使用しますか?Ruby Selenium Webdriver +ページオブジェクトモデル+練習サイトですか?

私はセレンとルビーのいくつかの具体的なチュートリアルを知っていますか?私はhttp://toolsqa.com/をJavaの学習に使っていましたが、このような優れたものでしたが、ルビーでは素晴らしいでしょうか?

最後の質問です!私はローカル環境での作業環境でテストしていましたが、登録テスト、ログインテストなどのテストを練習できる良い公的なウェブサイトは何ですか?

おかげ

+0

あなたは本当にそれを考えすぎています。 Rubyでは、受け入れテストツールとしてSeleniumを使用します.Seleniumは、(ローカル)Webサーバーが提供する実際のページをクロールするブラウザを自動化するツールです。 RSpecとCapybaraまたはMiniTest/TestUnitとCapybaraを使っていくつかの基本的な例を見てください。推薦はstackoverflowの話題にはありませんので、私は言及しません。 – max

+0

ありがとう、私はそれらのフレームワークをチェックアウトします。 – Speedychuck

答えて

1

のではなく、特定のフレームワークに焦点を当て、あなたがテストでページオブジェクトモデルパターンの背後にある理論に関するより多くの情報が必要ように聞こえます。ウェブサイトのための自動化されたUIテストを書くと問題の

Aハイレベルの概要

一つは、UIロジックとテストロジックの間に明確なseparation of concernsがないです。ページオブジェクトモデルパターンは、テストを単なるテストロジック(例えば、アサート、アプリケーションフロー)を含む独自のテストクラスに分割することによって、これを解決することを目的としています。また、ページオブジェクトクラスには、ページとのやりとりが含まれます(たとえば、ボタンをクリックしたり、ページ上のフォームにファイルを提出するなど)。

ページオブジェクト - をより詳細に

これらのクラスは標準的なWebページではなく、ページの一部またはモーダルダイアログボックスを意味するかもしれない「ページ」の表現です。

  • ページから要素を取得します
  • は、フォームに入力し

    • クリックボタン:

      彼らは、例えばページ上で物事を行う方法を含んでいます。

  • は、典型的には、それらは、ホームページや連絡先を検索する連絡先ディレクトリとアプリを想像してみて Fluent Interface

    として書かれています。これは2ページのオブジェクトになります。ホームページページオブジェクトとContactsDirectoryPageObject。各オブジェクトは、ページを操作してアクションを実行し、データを取得する方法を処理します。テストクラスで使用されるときに、彼らは(puesdocode)のように見えるかもしれませんテスト

    にページオブジェクトを使用して

    # The Homepage Page Object 
    class HomepageObject { 
    
        ClickContactsDirectoryPageButton() 
        { 
        webdriver.click(By.Id("contactsDirectoryButton")); 
        } 
    
        GetContactsDirectoryPageObject() 
        { 
        return new ContactsDirectoryPageObject() 
        } 
    } 
    
    
    # The Contacts Directory Page Object 
    class ContactsDirectoryPageObject { 
        SearchForContact(contactName) 
        { 
        webdriver.findElementById("searchBox").Click().SendKeys(contactName) 
        webdriver.findElementById("search").Click() 
        } 
    
        GetFoundContactInformation() 
        { 
        resultElement = webdriver.findElementById("result") 
    
        # Some logic to convert element into a model to pass back 
        result = new ContactResultModel(resultElement); 
    
        return result; 
        } 
    } 
    

    ::だから、いくつかのpuesdocodeは、次のようになります

    class MyTest { 
    
        daveContact = homepage.ClickContactsDirectoryPageButton() 
             .GetContactsDirectoryPage() 
             .SearchForContact("Dave") 
             .GetFoundContactInformation() 
    
        Assert.That(daveContact.Name).Equals("Dave") 
    
    } 
    

    を今すぐテストにのみ行います1つのジョブ - テスト中のフィーチャが機能することを主張します。アプリケーションを操作し、アプリケーションからのデータをアサートします。このテストでは、ページがどのように構築されているかは分かりません。

    なぜ迷惑なの?

    • テストにテストロジックとページオブジェクトモデルロジックの両方が含まれている場合は、ボタンまたはテキストボックスのIDが変更されるたびにすべてのテストを更新する必要があります。
    • テストは、アプリのフローをマッピングして正しいと主張するので、読みやすくなります。
    • アプリケーションの変更時にテストを更新するのは、ページオブジェクトを更新する場所が1つしかないためです。