« Return to Thread: Repeat step in a Groovy test case

Re: RE: Repeat step in a Groovy test case

by AcO6 :: Rate this Message:

Reply to Author | View in Thread

Hi Beat,

maybe this could work:

the repeat step places the counterName-Value in a webtest property, not a groovy variable, which can't be accessed using $propertyName.
Groovy tries to evaluate $propertyName as a groovy variable, which will fail.

Try "\${propertyName}" to access the webtest-property(-> Ant).
But be carefull, the expression "\${propertyName}" is only evaluated inside a webtest-step like verfiyXPath. The following won't work:

def varName = "\${webTestProperty}"

The result will exactly be the string, but not the property's value :)

Regards,
Sandro


Inactive hide details for Beat Koch <bidli@hispeed.ch>Beat Koch <bidli@...>



To

webtest@...

cc


Subject

[Webtest] RE: Repeat step in a Groovy test case

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="//input[@type='checkbox']" counterName="currentButton">
<verifyCheckbox xpath="$currentButton" checked="false"/>
</repeat>
<repeat xpath="//input[@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:"//input[@type='checkbox']", counterName:"currentButton") {
verifyCheckbox xpath:"$currentButton", checked:"false"
}
repeat (xpath:"//input[@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>



PricewaterhouseCoopers Aktiengesellschaft Wirtschaftsprüfungsgesellschaft

Vorsitzender des Aufsichtsrates
WP StB Reiner Dickmann

Vorstandsmitglieder
WP StB Hans Wagener · WP StB Peter Albrecht · WP StB Frank Brebeck · StB Prof. Dr. Dieter Endres
WP StB Ernst-Wilhelm Frings · WP RA Dr. Hans Friedrich Gelhausen · WP StB Werner Hölzl
WP StB Prof. Dr. Georg Kämpfer · WP RA StB Dr. Jan Konerding · WP StB Georg Kütter · Dr. Ludger Mansfeld
StB Marius Möller · WP StB Franz Nienborg · WP StB Gert-Michael Raabe
WP StB Martin Scholich · RA StB Christoph Schreiber · WP StB Dr. Norbert Vogelpoth
WP StB Franz Wagner · WP StB Wolfgang Wagner · WP StB Prof. Dr. Norbert Winkeljohann

Sitz: Frankfurt am Main - Amtsgericht Frankfurt am Main HRB 44845

Mitglied von PricewaterhouseCoopers International, einer Company limited by guarantee registriert in England und Wales

_________________________________________________________________
Diese Information ist ausschliesslich fuer den Adressaten bestimmt und kann vertraulich oder gesetzlich geschuetzte Informationen enthalten. Wenn Sie nicht der bestimmungsgemaesse Adressat sind, unterrichten Sie bitte den Absender und vernichten Sie diese Mail. Anderen als dem bestimmungsgemaessen Adressaten ist es untersagt, diese E-Mail zu lesen, zu speichern, weiterzuleiten oder ihren Inhalt auf welche Weise auch immer zu verwenden. Wir verwenden aktuelle Virenschutzprogramme. Fuer Schaeden, die dem Empfaenger gleichwohl durch von uns zugesandte mit Viren befallene E-Mails entstehen, schliessen wir jede Haftung aus.


* * * * *

The information contained in this email is intended only for its addressee and may contain confidential and/or privileged information. If the reader of this email is not the intended recipient, you are hereby notified that reading, saving, distribution or use of the content of this email in any way is prohibited. If you have received this email in error, please notify the sender and delete the email. We use updated antivirus protection software. We do not accept any responsibility for damages caused anyhow by viruses transmitted via email.



pic18678.gif (1K) Download Attachment

 « Return to Thread: Repeat step in a Groovy test case