java - WebDriver 发现元素不包含属性

标签 java extjs selenium webdriver selenium-webdriver

我有以下 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 的元素?

最佳答案

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

所以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();

关于java - WebDriver 发现元素不包含属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770486/

相关文章:

java - 在Android Studio Project中添加外部jar文件

java - JSONObject 文本必须以 java 中的 1 [字符 2 第 1 行] 处的 '{' 开头

javascript - var me = this; 的值是多少?

css - ExtJS 4 使用类似 float :right in a xtype:toolbar 的东西

python - 无法单击包含 ">"符号的下一页按钮

java - 如何验证我自己的提供商(仅用于测试目的)

java - java中stringbuilder中Fortify的拒绝服务问题

java - Play-Framework - 禁用公用文件夹修改重新加载

selenium - 使用 Appium 尝试触摸操作时出错

python - Selenium、Python 的问题