Asserting a checkbox is not checked by default in WebDriver with Junit



  • I'm using WebDriver with Junit 4.11 and I want to assert that a checkbox is not selected by default, and to do that I'm unsure which method to choose.

    The following is from the DOM before the checkbox is selected:

    <input type="checkbox" id="c234" name="instantAd" value="true" class="t-checkbox-A">
    

    Then, once the checkbox becomes selected a 'checked' is added, like so:

    <input type="checkbox" id="c234" name="instantAd" value="true" checked="" class="t-checkbox-A">
    

    I have tried the following:

    WebElement checkBox = chrome.findElement(By.cssSelector("input.t-checkbox-A[name=\"instantAd\"]"));
    
        new WebDriverWait(chrome, 5).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.t-checkbox-A[name=\"instantAd\"]")));
    
        Assert.assertEquals("null",checkBox.getAttribute("checked"));
    
        checkBox.click();
    
        Assert.assertEquals("true",checkBox.getAttribute("checked"));
    

    The first assertion fails. Perhaps this is because the 'checked' attribute isn't visible in the DOM yet, at a guess.

    The stacktrace is displaying:

    java.lang.AssertionError: expected: java.lang.String but was: null

    I've searched many different posts but none offer me the answer Im looking for, and when checking http://junit.sourceforge.net/javadoc/org/junit/Assert.html for info and guidance (as being new to test automation, Im finding it difficult to work out what I need in my constructor.

    Any help would be most appreciated.



  • From the stacktrace it looks to me like the issue is assertEquals can't compare two different types, in this case a string and a null. I would suggest removing the quotes from "null" as that's what's causing it to be cast as a string.

    Alternatively you could switch the assert to

    Assert.assertNull(checkBox.getAttribute("checked"));
    

    Also, in Selenium checkboxes are considered selected, you could also try asserting on that being false

    Assert.assertFalse(checkBox.isSelected());
    

Log in to reply
 

Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2