我正在测试一个用ExtJ(部分.)实现的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>谢谢
发布于 2012-12-26 18:15:54
我不太记得ExtJ了,但我假设检查和未检查是两个css类。尝试找出这些类(使用Chrome查看页面。工具)。
在页面对象上定义两个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;
}
}
});
}发布于 2012-12-26 15:10:49
我假设您使用的是can驱动程序,所以,您可以做的是:
isChecked = e.findElement(By.tagName("input")).Selected;或
isChecked = e.findElement(By.Id("checkboxfield-1028-bodyEl")).Selected;这就给了你这个州。
您在为它寻找一个JUnit断言吗?
发布于 2012-12-27 12:56:11
您可以尝试使用id的一部分查找复选框:
driver.findElement(By.xpath("//input[contains(@id, 'checkboxfield')]")).isSelected();https://stackoverflow.com/questions/14042121
复制相似问题