我正在测试在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>
由于
答案 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();