Asserting a checkbox is not checked by default in WebDriver with Junit
inna last edited by user
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
assertEqualscan'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
Also, in Selenium checkboxes are considered selected, you could also try asserting on that being false