java - 无法验证选中的复选框,Selenium Webdriver Java
问题描述
在我的测试中,我想验证选中的复选框。下面是我的代码
if (CheckboxForFirstCitizenship.isSelected()) {
System.out.println("Checkbox selected");
} else {
System.out.println("Checkbox not selected");
}
if (CheckboxForSecondCitizenship.isSelected()) {
System.out.println("Checkbox selected");
} else {
System.out.println("Checkbox not selected");
}
我在 PageObjects 类中的 Web 元素
@FindBy(xpath = "/html[1]/body[1]/ufe-root[1]/div[1]/div[1]/div[1]/ng-component[1]/div[1]/ufe-klient[1]/app-dashboard[1]/main[1]/div[1]/div[2]/app-individual-client-edit-container[1]/app-process-container[1]/app-local-loader[1]/div[1]/div[3]/app-individual-client-edit-client-data[1]/app-form-container[1]/p-accordion[1]/div[1]/p-accordiontab[1]/div[2]/div[1]/div[2]/div[1]/app-form-data-set-container[1]/div[1]/div[1]/app-individual-client-edit-personal-data-form[1]/app-data-container[1]/div[1]/div[2]/app-container-state[1]/div[1]/form[1]/div[1]/div[8]/div[1]/div[1]/app-individual-client-edit-citizenship-form[1]/div[2]/p-checkbox[1]/div[1]/div[2]")
@CacheLookup
public WebElement CheckboxForFirstCitizenship;
@FindBy(xpath = "/html[1]/body[1]/ufe-root[1]/div[1]/div[1]/div[1]/ng-component[1]/div[1]/ufe-klient[1]/app-dashboard[1]/main[1]/div[1]/div[2]/app-individual-client-edit-container[1]/app-process-container[1]/app-local-loader[1]/div[1]/div[3]/app-individual-client-edit-client-data[1]/app-form-container[1]/p-accordion[1]/div[1]/p-accordiontab[1]/div[2]/div[1]/div[2]/div[1]/app-form-data-set-container[1]/div[1]/div[1]/app-individual-client-edit-personal-data-form[1]/app-data-container[1]/div[1]/div[2]/app-container-state[1]/div[1]/form[1]/div[1]/div[8]/div[1]/div[2]/app-individual-client-edit-citizenship-form[1]/div[2]/p-checkbox[1]/label[1]")
@CacheLookup
public WebElement CheckboxForSecondCitizenship;
在测试结果中,尽管选择了 firstCheckox,但我有两个打印行“未选择复选框”。我做错了什么?有人可以帮忙吗?
<p-checkbox _ngcontent-c26="" binary="true" class="control__hint ng-untouched ng-pristine ng-valid ng-star-inserted" label="Główne" id="main-citizenship-checkbox-0" style="" xpath="1">
<div class="ui-chkbox ui-widget">
<div class="ui-helper-hidden-accessible">
<input type="checkbox" name="undefined" value="undefined">
</div>
<div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active"><span class="ui-chkbox-icon ui-clickable pi pi-check"></span></div>
</div>
<!---->
<label class="ui-chkbox-label ui-label-active ng-star-inserted">Główne</label>
</p-checkbox>
解决方案
为了能够使用isSelected
方法,您必须寻址到input type="checkbox"
元素。对第一个复选框
使用 css 选择器。
可能对于第二个,它将是。#main-citizenship-checkbox-0 input
#main-citizenship-checkbox-1 input
@FindBy(css = "#main-citizenship-checkbox-0 input")
@CacheLookup
public WebElement checkboxForFirstCitizenship;
推荐阅读
- reactjs - 为除一条特定路线之外的所有路线渲染组件
- ios - 强制子视图控制器调用基本视图控制器方法
- sql-server - "Subquery returned more than 1 value" when combining tables with subquery
- javascript - 进行文本过渡,下方的文本移动以为上方的文本腾出空间
- c# - 查找和替换窗口中 C# 类中对象的正则表达式映射属性
- arrays - 排序功能不适用于聊天应用程序的 firebase .onSnapshot
- node.js - 在 NPM 中查找依赖项的根目录
- plugins - Atom:为什么 Linter 不会在文本中突出显示我的错误?
- python - 使用列条件随机采样 Pyspark 数据帧
- sas - 在一个 Proc SQL 查询中聚合不同分组上的多个变量