6

提供されている GWT を使用して、SimplePagerデータ セットを介したレコード/ページ ナビゲーションを提供しています。次へ/前へボタンの有効状態を適切に制御していることをテストしたいと思います。SimplePager ではボタンの有効/無効な画像を指定できますが、「ボタン」自体はButton ではなくImageButton拡張される内部クラスです。Imageしたがって、結果の HTML はボタンの有効化/無効化属性を使用せず、状態ごとに異なる埋め込み画像を提供します。

SeleniumでSimplePagerナビゲーションボタンが有効になっている状態を検出する合理的な方法はありますか?

4

3 に答える 3

0

コード サンプルを書き直して、書式を改善します。

public class ImageButton extends Component{
   public ImageButtom (String loc){
    super(locator);
   } 

   @Override
   public boolean isEnabled() {
    //custom representation!...
    return this.getAttribute("class").contains("imgdisabled");
    //return this.getCssValue("background").contains("imgdisabled");
    //return this.getAttribute("src").contains("imgdisabled");
   }
}

テストページで Webelement のようなこのコンポーネントを使用できます

@FindBy(locator="locator")
ImageButton prevButton;

@FindBy(locator="locator")
ImageButton nextButton;

テストコードで

page.prevButton.verifyEnabled();
page.prevButton.assertEnabled();
于 2013-04-01T12:06:30.823 に答える
0

SimplePager のソース コードを見ると、ジェネレーターを使用して css スタイルを作成しているように見えます。無効な状態 (および有効な状態) には css クラスが適用されています (このhttps://code.googleから離れます)。 .com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/cellview/client/SimplePager.java?r=9614 )。

したがって、何らかの方法で実際のResourcesクライアント バンドルにアクセスできる場合は、呼び出しresources.simplePagerStyle().disabledButton()て無効なボタンの css クラスである文字列を取得し、それをセレンのロケーターとして使用できます。Selenium テストを実行している jvm は、コンパイルされた GWT コード (つまり、GWT アプリをデバッグするときに実行されるコード) を参照できない可能性があるため、これは非常に注意が必要です。

SimplePagerまたは、クライアント バンドルを使用する代わりに をサブクラス化DEFAULT_RESOURCESし、独自のものを渡し、無効化されたボタンに使用されるクラス名を制御することができます (Style元のクライアントから取得した既存のクラスをラップする独自のクラスを作成することにより)。バンドルしますが、戻り値にプレフィックスまたは何かを追加します)。

コンポーネントは完全にカプセル化されており、その内部に到達しようとしているため、少し面倒です。

于 2014-11-13T10:29:06.980 に答える
0

標準的な慣行では、カスタム コンポーネントを作成する必要があります。たとえば、イメージ ボタンです。アノテーションで使用できるカスタム コンポーネントを作成する機能を提供するISFWを使用することをお勧めします。コンポーネントでは、AUT に従って動作を指定できます。

于 2013-02-12T14:59:48.003 に答える