0

Webdriver と Java を使用して UI フローを自動化しています。次の点で助けが必要です。

リンクのクリック、タイトルの確認、ブラウザの戻るボタンのクリック - これらの手順は、コンテンツ内のリンクの数に対して繰り返されます。ページ オブジェクト デザインを使用しており、すべてのオブジェクトが異なるクラスにあります。私のコードは次のとおりです。

objectBase.clickLink1();
titleVeri(pageTitle1);
driver.navigate().back();
objectBase.clickLink2();
titleVeri(pageTitle2);
driver.navigate().back();

objectBaseすべてのページ オブジェクトを保存したオブジェクトの名前です。clickLink1リンクをclickLink2クリックするページオブジェクトクラスのメソッドです。titleVeriタイトルを確認するユーティリティメソッドです。

私が必要とするのは、これがもっとあるので、この内部ループを構築することです。

4

2 に答える 2

0

これにはマップを使用できます。objectBase でメソッド clickLink(key) を作成します。

次に、次のようなことを行います

Map<String,String> myMap = new TreeMap();
myMap.put("1",pageTitle1);
myMap.put("2",pageTitle2);

for(Map.Entry<String,String> entry : myMap.entrySet()){
    objectBase.clickLink(entry.getKey());
    titleVeri(entry.getValue());
    driver.navigate().back();
}
于 2013-09-09T22:22:59.387 に答える
0

あなたが説明していることは厳密には不可能です。その理由は、関数へのポインターを持つことができないためです。

ただし、ページ オブジェクト パターンを使用しているとのことでした。関数を使用するのではなく、clickLink1()返す関数はありますlink1()か? そうすれば、マップを使用できます(BevynQが言ったように)。

Map<WebElement, String> linksAndTitles = new HashMap();
linksAndTitles.put(page.getHomePageLink(), "Home");
linksAndTitles.put(page.getUserPageLink(), "Contact Details");
...and so on for each of the different links...

for (WebElement link: linksAndTitles.keySet()){
    link.click();
    titleVeri(linksAndTitles.get(link));
    driver.navigate().back();
}

補足として...これらのリンクの1つがログアウトリンクである場合...それは個別にテストする必要があります。

さらに...私はこのテストを本当にお勧めしません...それはおそらく時間の無駄です. 各ページのisLoaded()関数で、タイトルをテストする必要があります。そうすれば、 を呼び出すたびpage.get()に、タイトルが自動的にテストされ、テストの一部にはなりません。

于 2013-09-10T00:00:59.810 に答える