如何检查selenium中是否选中了extjs复选框?

时间:2012-12-26 14:42:36

标签: java extjs selenium checkbox

我正在测试在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>

由于

3 个答案:

答案 0 :(得分:0)

我假设您使用的是webdriver,所以您可以做的是:

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

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

这会给你一个州。

你在寻找JUnit断言吗?

答案 1 :(得分:0)

我不记得ExtJs,但我认为check和unchecked是两个css类。尝试找出这些类(使用Chrome Dev。工具检查页面)。

在页面对象上定义两个WebElements:

@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;
        }
      }
   });
}

答案 2 :(得分:0)

您可以尝试使用id:

的一部分找到复选框
driver.findElement(By.xpath("//input[contains(@id, 'checkboxfield')]")).isSelected();