0

ExtJsに実装されたWebアプリケーション(部分的に...)をテストしています。チェックボックスはボタンとして実装されています。Seleniumライブラリを使用してJavaで記述されたテスト。

ボタンをチェックするために、私は次のようなものを使用しています:

selenium.click("css=input.x-form-field.x-form-checkbox",true);

チェックボックスがオンになっているかどうかに関係なく、チェックボックスの状態を取得しようとしていますが、その方法がわかりません。

実装は次のとおりです。

<td id="checkboxfield-1028-bodyEl" class="x-form-item-body x-form-cb-wrap" colspan="3" role="presentation" style="width: 100%;">
<input id="checkboxfield-1028-inputEl" class="x-form-field x-form-checkbox" type="button" hidefocus="true" autocomplete="off" aria-invalid="false" style="-moz-user-select: text;">
<label id="checkboxfield-1028-boxLabelEl" class="x-form-cb-label x-form-cb-label-after" for="checkboxfield-1028-inputEl">Active</label>

ありがとう

4

3 に答える 3

0

私はあなたがウェブドライバーを使用していると仮定しているので、あなたができることは次のとおりです。

 isChecked = e.findElement(By.tagName("input")).Selected;

また

 isChecked = e.findElement(By.Id("checkboxfield-1028-bodyEl")).Selected;

それはあなたに状態を与えます。

そのためのJUnitアサーションを探していますか?

于 2012-12-26T15:10:49.033 に答える
0

ExtJsを正確に覚えていませんが、チェックされているものとチェックされていないものは2つのcssクラスであると思います。これらのクラスを見つけてみてください(Chrome開発ツールを使用してページを調べてください)。

ページオブジェクトに2つのWebElementを定義します。

@FindBy(cssSelector=".x-form-checkbox.unchecked")
WebElement checked;

@FindBy(cssSelector=".x-form-checkbox.checked")
WebElement unchecked;

次に、ボタンがオンまたはオフになるまで待つ必要があります。これは、次のメソッドを追加することで実行できます。

protected final void waitForElementPresent(final By by) {
   seleniumContext.getWebDriverWait().until(new ExpectedCondition() {
      @Override
      public Boolean apply(WebDriver driver) {
        try {
          driver.findElement(by);
          return true;
        } catch (NoSuchElementException e) {
          return false;
        }
      }
   });
}
于 2012-12-26T18:15:54.307 に答える
0

idの一部を使用してチェックボックスを検索してみてください。

driver.findElement(By.xpath("//input[contains(@id, 'checkboxfield')]")).isSelected();
于 2012-12-27T12:56:11.110 に答える