0

我有以下 HTML

<button class="x-btn-text " style="position: relative; width: 69px;" type="button" tabindex="0" aria-disabled="false">OK</button>
<button class="x-btn-text" style="position: relative; width: 69px;" type="button" tabindex="0">OK</button>

第一个按钮被禁用,第二个按钮被启用,因为我想点击启用的按钮。有没有办法找到没有属性的元素aria-disabled

4

3 回答 3

4

ExtJs 案例。aria-disabled="false"在这里,您需要通过属性使用getAttribute("aria-disabled")或 XPath/CssSelector确定它是否已启用。

所以 Code Enthusiastic 的逻辑应该是正确的,但是 ExtJS 在某些方面总是很特别。

List<WebElement> okButtons = driver.findElements(By.xpath("//button[text() = 'OK']"));
for (WebElement okButton : okButtons) { 
    if (!okButton.getAttribute("aria-disabled").equals("false")) {
        okButton.click();
        break;
    }
}

或者更简单,排除定位器中启用的选项。(由于您需要在此处输入文本,因此没有合适的使用 CssSelector 的定位器,只有 XPath)

WebElement enabledokButton = driver.findElement(By.xpath("//button[text() = 'OK' and not(@aria-disabled = 'false')]"));
enabledokButton.click();
于 2013-09-12T21:23:45.880 回答
3

有没有办法找到没有属性 aria-disabled 的元素?

是的!使用 CSS!

您查找没有该aria-disabled属性的按钮的选择器将是,button:not([aria-disabled])

driver.findElement(By.cssSelector("button:not([aria-disabled])").click();
于 2013-09-12T21:38:55.357 回答
1
List<WebElement> okButtons = driver.findElements(By.xpath("//button[text() = 'OK']"));
for (WebElement okButton : okButtons) { 
    if (okButton.isEnabled()) {
        okButton.click();
        break;
    }
} 
于 2013-09-12T18:56:07.940 回答