我遇到了Selenium无法验证是否确实显示了可见的可交互复选框元素的问题。问题仅在于复选框;页面上的其他元素都经过了良好的验证。
标记(剪断):
<div>
<input type="checkbox" id="innskuttegenkapital">
<div class="hb-label" data-e2e-selector="innskuttegenkapitalhb-checkbox-label">
<label for="innskuttegenkapital" id="innskuttegenkapital-label">Innskutt egenkapital</label>
</div>
</div>
</div>
我正在使用PageFactory创建Web元素,并断言以验证可见与否:
Java页面对象的代码:
@FindBy(css = "[data-e2e-selector=innskuttegenkapitalhb-checkbox-label]")
WebElement innskuttegenkapitallabel;
@FindBy(css = "#innskuttegenkapital")
WebElement innskuttegenkapitalcheckbox;
Java测试步骤中的代码:
assertThat(page.innskuttegenkapitallabel.isDisplayed()).isTrue();
assertThat(page.innskuttegenkapitalcheckbox.isDisplayed()).isTrue();
第一个断言(对于具有data-e2e-selector的元素)断言true。但是第二个(对于具有ID的元素-标签旁边的复选框)断言false。
我知道问题出在我的代码上,因为复选框确实是可见的,并且在停止测试时可以手动检查。
想法?如果我需要发布更多细节或更好的分析,请提供建议。
for属性是的允许属性
当用作的属性时
<label for="username">Your name</label>
<input type="text" id="username">
验证<代码>
我想这里的问题是第二个元素定位器不是唯一的。
如果是这样,Selenium可能会找到与该定位器匹配的其他元素,并且该元素不会被显示。