I've done some tests (i.e. dozens of trial and error runs)... The
following Webtest ant script works perfectly:
---
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "../dtd/Project.dtd">
<project default="test">
<target name="test">
<webtest name="Check repeat step">
<invoke url="http://localhost/~bkoch/cbt.html"/>
<repeat xpath="//inp...@type='checkbox']"
counterName="currentButton">
<verifyCheckbox xpath="$currentButton" checked="false"/>
</repeat>
<repeat xpath="//inp...@type='radio']" counterName="rb">
<verifyRadioButton xpath="$rb" checked="false"/>
</repeat>
<repeat count="3">
<testInfo type="Debug" info="Hello world: #{count}" />
</repeat>
</webtest>
</target>
</project>
---
However, the following Webtest Groovy class can not be executed:
---
import com.canoo.webtest.WebtestCase
class SimpleTest extends WebtestCase {
void testWebtestOnGoogle() {
webtest("Check repeat step") {
invoke "http://localhost/~bkoch/cbt.html"
repeat (xpath:"//inp...@type='checkbox']",
counterName:"currentButton") {
verifyCheckbox xpath:"$currentButton", checked:"false"
}
repeat (xpath:"//inp...@type='radio']", counterName:"rb") {
verifyRadioButton xpath:"$rb", checked:"false"
}
repeat (count:"3") {
testInfo type:"Debug", info:"Hello world: #{count}"
}
}
}
}
---
The error is:
1)
testWebtestOnGoogle(SimpleTest)groovy.lang.MissingPropertyException:
No such property: currentButton for class: SimpleTest
at
org
.codehaus
.groovy
.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
at
org
.codehaus
.groovy
.runtime
.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
at
org
.codehaus
.groovy
.runtime
.callsite
.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:240)
at SimpleTest
$_testWebtestOnGoogle_closure1_closure2.doCall(repeatTest.groovy:8)
Line 8 is the verifyCheckbox one. If I comment it out, then the error
appears on the verifyRadioButton line. Strangely enough, the testInfo
line executes fine. As a consequence, I have tried to use
#{currentButton} instead of $currentButton on the verifyCheckbox line
but then I get the following error during execution:
com.canoo.webtest.engine.StepExecutionException
Stacktrace
: Error processing xpath "#{currentButton}"., Step: VerifyCheckbox
at : with (taskName="verifyCheckbox")
I believe that the ant script and Groovy class are identical from a
semantical point of view. Either I'm wrong about this (and I would
appreciate any pointer to the correct Groovy implementation) or there
really is a problem with Webtest.
Regards
Beat
PS: This is my test page:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd
">
<html>
<head>
<title>Checkbox test page</title>
</head>
<body>
<form name="CBT">
<p><input type="checkbox" id="cb1"/></p>
<p><input type="checkbox" id="cb2"/></p>
<p><input type="checkbox" id="cb3"/></p>
<p><input type="radio" id="rb1" name="group1"/></p>
<p><input type="radio" id="rb2" name="group1"/></p>
<p><input type="radio" id="rb3" name="group1"/></p>
</form>
</body>
</html>