检查按钮是否被禁用

时间:2018-03-18 14:55:57

标签: java selenium-webdriver

我的问题是,selenium表示下一个箭头按钮在禁用/变灰时启用。我想要做的就是这个

1单击下一个箭头按钮 2睡5秒 3检查是否禁用 4单击下一个箭头按钮 5检查是否禁用 (循环重复步骤1-5)  如果按钮被禁用,则执行循环

我的代码无效

 PS_OBJ_CycleData.Nextbtn(driver).click();
 Thread.sleep(5000);
 WebElement element = driver.findElement(By.id("changeStartWeekGrid_next"));
 if (element.isEnabled()) {
  System.out.println("Good next arrow enabled");
 } else {
  System.out.println("next arrow disabled");
  PS_OBJ_CycleData.Cancelbtn(driver).click();
  break dowhileloop;
 }

我的控制台输出是“启用了下一个好箭头”而不是转到其他语句。

按钮HTML在这里

<div id="changeStartWeekGrid_next" class="paginationButton" disabled="disabled" data-xpal="xpath-selected">
   <a tabindex="0" href="#" id="changeStartWeekGrid_next_link" onclick="var registry = require('dijit/registry'); registry.byId('changeStartWeekGrid').next(); return false;">
   <span class="icon-pagination-next"></span>
   </a>
</div>

正如您所看到的那样,按钮实际上是禁用的另一种检查方式是按钮是否已被禁用?任何帮助将不胜感激。

这是被检查元素的附加图片 enter image description here

4 个答案:

答案 0 :(得分:2)

The documentation for isEnabled

遗憾的是,使用isEnabled方法在这种情况下不起作用,如文档中所述:

  

除了已禁用输入元素之外,通常会返回true。

一个合适的替代方法是使用JavaScript来检查属性的存在及其值。您可以通过webdriver类的executeScript方法注入JavaScript。第一个参数是脚本,所有后面的参数都传递给脚本,可以作为参数[i],...

访问

例如:

Boolean disabled = driver.executeScript("return arguments[0].hasAttribute(\"disabled\");", element);

答案 1 :(得分:0)

我在这种情况下,因为我没有实际的按钮,我需要找到它属性,看它是否被禁用。

  PS_OBJ_CycleData.Nextbtn(driver).click();
    Thread.sleep(4000);
    // check is arrow button is disabled
    if (driver.findElement(By.id("changeStartWeekGrid_next")).getAttribute("disabled") != null) {
     PS_OBJ_CycleData.Cancelbtn(driver).click();
     break dowhileloop;
    }

答案 2 :(得分:0)

您可以使用以下简单代码进行检查:

Boolean isbutton;
isbutton=button1.isEnable()

答案 3 :(得分:0)

确保您具有正确的元素。我浪费了很多时间试图弄清楚为什么一个元素在不应该启用的情况下才启用,而实际上我在查看错误的元素!在浏览器中检查该元素没有帮助,因为它与Java代码所查看的元素不同。事实证明,以下代码很有帮助:

System.out.println("Actual element=" + describeElement(yourElement));

public static String describeElement(WebElement element) {
    String result = "";
    if (element == null ) {
        log.error("Could not describe null Element");
        return "null";
    } 
    // Look for common attributes, such as id, name, value, title, placeholder, type,  href, target, role, class,
    String id = element.getAttribute("id");
    String name = element.getAttribute("name");
    String value = element.getAttribute("value");
    String title = element.getAttribute("title");
    String placeholder = element.getAttribute("placeholder");
    String type = element.getAttribute("type");
    String href = element.getAttribute("href");
    String target = element.getAttribute("target");
    String role = element.getAttribute("role");
    String thisClass = element.getAttribute("class");

    result = "WebElement [tag:" + element.getTagName() + " text:'" + limit(element.getText()) + "' id:'" + id + "' " +
            (StringUtils.isEmpty(name) ? "" : (" name:'" + name + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" value:'" + value + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" title:'" + title + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" placeholder:'" + placeholder + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" type:'" + type + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" href:'" + href + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" target:'" + target + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" name:'" + name + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" role:'" + role + "' ")) + 
            (StringUtils.isEmpty(name) ? "" : (" class:'" + thisClass + "' ")) + 
            " isDisplayed: " + element.isDisplayed() +
            " isEnabled: " + element.isEnabled() +
            " isSelected: " + element.isSelected() + "]";
    return result;
}