4

そこで、セレンテストの設計に関する考慮事項のドキュメントを確認しています。ここにあるUIマッピングセクションについて質問があります: http ://seleniumhq.org/docs/06_test_design_considerations.html#ui-mapping

彼らは次のようなプロパティファイルを作成することを提案しています:

admin.username = loginForm:tbUsername
admin.loginbutton = loginForm:btnLogin
admin.events.createnewevent = adminHomeForm:_activitynew
admin.events.cancel = addEditEventForm:_IDcancel
admin.events.viewoldevents = adminHomeForm:_activityold

これは、htmlオブジェクトをキーワードにマップします

その後、彼らはそれを次のように使用します:

selenium.type(admin.username, "xxxxxxxx");

ただし、プロパティオブジェクトについて見てきたことから、ハッシュテーブルと非常によく似ています。ここで、次のようにプロパティファイルをロードしています: http ://docs.oracle.com/javase/tutorial/essential/environment/properties.html [デフォルトのプロパティの作成とロード]セクション

だから私がする必要があるドキュメントで同じステートメントを行う:

selenium.type(loadedProps.get(admin.username), "xxxxxxx");

これは悪くはありませんが、例ほど読みにくいので、私の質問は、プロパティファイルをロードして、キーワードを同じように使用できるようにする方法です。また、ページオブジェクトデザインパターンを使用することを考えているので、そのようにした場合、プロパティファイルをロードするPageObject Baseクラスを定義すると、ベースを拡張するすべてのページオブジェクトクラスがにアクセスできるようになります。プロパティ、これは正しい推論ですか?

4

2 に答える 2

1

Javaでは、「.」以降 演算子として意味があるため、例とまったく同じようにすることはできません(何を目指しているのかわかりません)。次のようなことができます:

セットアップ コード:

public class Config {
  public static String admin_username;

  static {
    Properties props = ...;
    admin_username = props.getProperty("admin.username");
  }
}

使用コード:

import static Config.*;

selenium.type(admin_username, "xxxxxxxx");

本当に気が狂った場合は、リフレクションを使用して Config クラスをロードできます (「静的」ブロックのボイラープレートを削除するため)。

于 2012-07-21T00:23:07.907 に答える
0

個人的には、良い習慣だとは思いませんが、使いたい場合は、あなたの電話です。

public class AdminUiMap {
    public String username;

    public UiMap(String fileName) {
        Properties props = new Properties();
        props.load(new FileInputStream(fileName));

        this.username = props.getProperty("admin.username");
    }
}

次に、テスト設定で、次のことができます

AdminUiMap admin = new AdminUiMap("adminLocators.properties");

そして、あなたは本当に書くでしょう

selenium.type(admin.username, "xxxxxxxx");

2 番目のオプション:このドキュメントを参照してください。これは非常に簡単なマニュアルです。Selenium RC 専用の段落を 1 つだけ指摘します。

Selenium RC の場合、2 つのオプションがあります。user-extensions.jsマップファイルは、スイッチで起動時に指定し たファイルに含まれる場合があります-userExtensionssetUserExtensionJsまたは、ブラウザーが開始される前に、ドライバー言語のコマンドのバリアントを使用して動的にロードすることもできます。

于 2012-07-21T08:13:09.200 に答える