提问者:小点点

Selenium(Java):无法验证是否显示了ID复选框


我遇到了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。

我知道问题出在我的代码上,因为复选框确实是可见的,并且在停止测试时可以手动检查。

想法?如果我需要发布更多细节或更好的分析,请提供建议。


共2个答案

匿名用户

for属性是的允许属性

当用作的属性时

<label for="username">Your name</label>
<input type="text" id="username">

验证<代码>

匿名用户

我想这里的问题是第二个元素定位器不是唯一的。
如果是这样,Selenium可能会找到与该定位器匹配的其他元素,并且该元素不会被显示。