Using JWebUnit 2.2 (via Maven) in our test suite, I recently encountered a test failure with this stack trace:
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.apache.commons.collections.iterators.AbstractIteratorDecorator.next(AbstractIteratorDecorator.java:67)
at org.apache.commons.collections.map.ListOrderedMap$ListOrderedIterator.next(ListOrderedMap.java:605)
at org.apache.commons.collections.iterators.AbstractIteratorDecorator.next(AbstractIteratorDecorator.java:67)
at org.apache.commons.collections.map.ListOrderedMap$KeySetView$1.next(ListOrderedMap.java:518)
at com.gargoylesoftware.htmlunit.html.DomElement.printOpeningTagContentAsXml(DomElement.java:144)
at com.gargoylesoftware.htmlunit.html.HtmlElement.toString(HtmlElement.java:553)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.javascript.host.HTMLElement.toString(HTMLElement.java:1719)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.javascript.host.Event.toString(Event.java:602)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:931)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1237)
at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:179)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:449)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:354)
at com.gargoylesoftware.htmlunit.html.HtmlAnchor.doClickAction(HtmlAnchor.java:100)
at com.gargoylesoftware.htmlunit.html.HtmlAnchor.doClickAction(HtmlAnchor.java:121)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1329)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1288)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1257)
at net.sourceforge.jwebunit.htmlunit.HtmlUnitTestingEngineImpl.clickLinkWithExactText(HtmlUnitTestingEngineImpl.java:1684)
at net.sourceforge.jwebunit.junit.WebTester.clickLinkWithExactText(WebTester.java:2501)
at net.sourceforge.jwebunit.junit.WebTestCase.clickLinkWithExactText(WebTestCase.java:2001)
It's a one-off so far, but it seems there is a race condition either in your code or upstream. Our tests are very straightforward and don't use threads, so I feel reasonably confident it is not our fault.
I just hit what looks like the same bug. Here's my stacktrace (snipped at the point it gets called):
HtmlUnitWebElement.sendkeys is where my user code called into htmlunit.
Running the same test again did not reproduce the error.
oh and the gradle dependencies we are using are: 'org.seleniumhq.selenium:selenium-java:2.33.0', 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.33.0'
Hmm, looking at this, I'm not using jwebunit at all; perhaps this is an htmlunit bug?
EDIT: filed bug upstream
Last edit: Philip Potter 2014-08-06