0

開発している自動化スクリプトの1つにRuby Selenium-Webdriverを使用していましたが、私はページオブジェクトを使用するように求められていますが、アプリケーション私はCSVファイルを使用していますが、アプリケーションでCSVファイルで使用しているすべてのxpathを定義しています。これらのオブジェクトを参照するスクリプト内のCSVファイルを解析しています。ページオブジェクトの定義にクラスを使用するか、パフォーマンスの問題とは別にCSVファイルを使用する点での違いがありますか?私は、CSVファイルを使用することは、構成上の観点から私たちのアドオンとなるだろうと考えています。Page ObjectとSeleniumの設定ファイル

編集 - 実際にはクラウドベースのツールで構築されたアプリケーションを自動化しているので、基本的にすべてのアプリケーションがHTMLの観点から同じ設計構造を共有しているので、xpathパターンをCSVで定義し、 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

webdriver/watir以上のライブラリセットを提供するpageobjects gemもあり、コードを簡略化しています。

さらに、なぜxpathsですか?要素を特定する最後の推奨方法の1つです。

フレームワークの面では、csvはPageObjectsよりも保守上の問題が多いはずです。テキストとコードの基本的な違い。あなたはPageObjectsのあなたの要素にオブジェクト指向のアプローチを強制しますが、それはcsvでは不可能です。

最も適切なシナリオでは、xpathがどのページに属しているかを定義する列/別のシートを作成しています。それはオーバーヘッドのように聞こえる。アプリケーション/スイートが成長するにつれ、何千もの要素が存在する可能性があります。その種のデータでCSVを解析/手動で更新することを想像してみてください。

PageObjectsではなく、要素がページに制限されます。アプリを変更すると、影響を受ける要素も指定されます。さて、あなたの要素をcssではなくPageObjectでオブジェクトとして定義するときは、csvを読み込んで明示的に要素を作成する必要はありません。

+0

xpathを使用する理由は動的です。ページをリフレッシュするたびに各要素のIDが変更され、クラウドベースのテクノロジでアプリケーションが実行されるようになります。アプリケーションをDEVからUAT、PRODに移行すると部門のクラスも変更されます – utkarshs

+0

実際にはクラウドツールで構築されたアプリケーションを自動化するので、すべてのアプリケーションがHTMLと同じ基本構造を共有しますページに基づいた要素を見つける必要はありません。なぜなら、環境上のアプリケーションであれば構造が常に同じになるからです。スクリプト開発を加速する理由は、CSVでxpathパターンを定義し、その要素の実際のxpathをオンザフライで生成するこれらのCSVファイルを使用していくつかのパラメータをカスタムメソッドに渡すことによって – utkarshs

関連する問題