我遇到了 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 元素,并使用 assertThat 來驗證可見與否:
來自頁面物件的 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 的元素)斷言為真。但是第二個(對于具有 ID 的元素 - 標簽旁邊的復選框)斷言 false。
我知道問題出在我的代碼上,因為在停止測驗時復選框確實可見并且可以手動檢查。
想法?如果我需要發布更多詳細資訊或更好的描述,請提出建議。
uj5u.com熱心網友回復:
屬性的 HTML
在為屬性是允許的屬性<label>和<output>。當用于<label>元素時,它表示該標簽描述的表單元素。
用法
當用作 的屬性時<label>,for 屬性的值是它所關聯的表單元素的 id:
<label for="username">Your name</label>
<input type="text" id="username">
結論
驗證<label>元素以及for="innskuttegenkapital"屬性的可見性與驗證<input>withid="innskuttegenkapital"屬性相同。
uj5u.com熱心網友回復:
我想這里的問題是第二個元素定位器不是唯一的。
如果是這樣,Selenium 可能會找到與該定位器匹配的其他元素,并且該元素不會顯示。
uj5u.com熱心網友回復:
xpath = //label[text()='Innskutt egenkapital']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/403810.html
標籤:
上一篇:“內部”型別的Java泛型模式
下一篇:沒有快取版本的org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21可用于離線模式錯誤
