[英]isEnabled() method always returns true
我想獲取啟用了復選框的字符串列表。 但是當我使用 isEnabled() 時,即使對於禁用的復選框,它也總是返回 true。 在輸出中,我得到了該字段中存在的所有字符串的列表。
以下是我為它編寫的代碼:-
@FindBy(css = "[class *= 'CheckboxTextAligned']")
private List<WebElement> airportListCheckbox;
public void getEnabledValues() {
for (WebElement elements : airportListCheckbox) {
if(elements.isEnabled()==true) {
for (WebElement airportText : airportListTextName) {
airportText.getText();
LOG.info(airportText.getText());
}
}
}
HTML 代碼如下:-對於禁用復選框:-
<label role="checkbox" aria-label="checkbox" class="inputs__CheckboxTextAligned undefined undefined">
<input type="checkbox" disabled checked>
<span class="inputs__box"><svg width="16px" height="16px" class="inputs__checkIcon" viewBox="0 0 1024 1024">
<path d="434z"></path></svg></span>
<span class="inputs__text">London City</span></label>
對於啟用復選框:-
<label role="checkbox" aria-label="checkbox" class="inputs__CheckboxTextAligned undefined undefined">
<input type="checkbox" checked="">
<span class="inputs__box"><svg width="16px" height="16px" class="inputs__checkIcon" viewBox="0 0 1024 1024">
<path d="133z"></path></svg></span>
<span class="inputs__text">London Gatwick</span></label>
在嘗試驗證輸入節點已啟用還是已禁用時,isEnabled()將檢查元素上的Disabled屬性。 如果屬性“ disabled”不存在,則返回True。
試試下面的代碼:
@FindBy(xpath = "//label[contains(@class, 'CheckboxTextAligned')]/following::input")
private List<WebElement> airportListCheckbox;
public void getEnabledValues() {
for (WebElement elements : airportListCheckbox) {
if(elements.isEnabled()) {
for (WebElement airportText : airportListTextName) {
airportText.getText();
LOG.info(airportText.getText());
}
}
}
當您要檢查輸入節點是否已啟用時,您需要稍稍更改定位器,因為通常會嘗試檢查標簽是否已啟用/禁用(而不是輸入節點),因此您將始終如一。
IsEnabled()
方法總是在WebElement
尋找“禁用”屬性,否則它總是會給出True
結果。 如果您的定位器中不存在 disabled 屬性,則在您的元素中查找任何其他屬性來說明字段已禁用或啟用試試這個:
WebElement.getAttribute("aria-disabled").equals("false")
然后相應地使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.