-
Bug
-
Resolution: Fixed
-
Minor
-
None
Sometimes when executing `job.scheduleBuild()` on a parametrised job selenium test fails with
org.openqa.selenium.NoSuchElementException: Unable to locate By.xpath: .//input[./@type = 'submit' or ./@type = 'reset' or ./@type = 'image' or ./@type = 'button'][((./@id = 'Build' or ./@name = 'Build' or contains(./@value, 'Build')) or contains(./@title, 'Build'))] | .//input[./@type = 'image'][contains(./@alt, 'Build')] | .//button[(((./@id = 'Build' or contains(./@value, 'Build')) or contains(normalize-space(.), 'Build')) or contains(./@title, 'Build'))] | .//input[./@type = 'image'][contains(./@alt, 'Build')] in http://172.17.0.1:55457/job/matrixJob/build?delay=0sec For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46' System info: host: 'ip-172-18-64-125', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-42-generic', java.version: '1.8.0_40' Driver info: driver.version: unknown at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:292) at org.jenkinsci.test.acceptance.junit.Wait.timeoutException(Wait.java:143) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:261) at org.jenkinsci.test.acceptance.junit.Wait.until(Wait.java:74) at org.jenkinsci.test.acceptance.po.CapybaraPortingLayerImpl.find(CapybaraPortingLayerImpl.java:197) at org.jenkinsci.test.acceptance.po.CapybaraPortingLayerImpl.clickButton(CapybaraPortingLayerImpl.java:88) at org.jenkinsci.test.acceptance.po.Job.scheduleBuild(Job.java:289) at org.jenkinsci.test.acceptance.po.Job.scheduleBuild(Job.java:273) at
Looks like after clicking on build with Paramters the form parameters take some time to be loaded, causing the exception before.
It is reproducible launching subsequent builds for a parametrised job, something like
int i = 0; while (i < 100) { i = i + 1; try { job.scheduleBuild().shouldSucceed(); } catch (Exception e) { System.out.print("error"); } }