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>

有効なボタンをクリックしたいので、最初のボタンは無効になり、2 番目のボタンは有効になります。attribute を持たない要素を見つける方法はありますaria-disabledか?

4

3 に答える 3

4

ExtJs ケース。ここでは、XPath/CssSelectoraria-disabled="false"を使用して属性によって有効かどうかを判断する必要があります。getAttribute("aria-disabled")

したがって、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 に答える
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 に答える