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

您可以尝试使用部分 id 查找复选框:

driver.findElement(By.xpath("//input[contains(@id, 'checkboxfield')]")).isSelected();
于 2012-12-27T12:56:11.110 回答
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,但我假设选中和未选中是两个 css 类。尝试找出这些类(使用 Chrome 开发工具检查页面)。

在页面对象上定义两个 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 回答