Comment puis-je valider une page Web par rapport à son doctype (dtd) dans une étape Canoo Webtest avec Groovy?Valider une page Web par rapport à son doctype (dtd) dans une étape Canoo Webtest en utilisant un script Groovy
1
A
Répondre
1
En fait, je connais la réponse. Mais comme il m'a fallu du temps pour le faire fonctionner, j'ai pensé partager ma solution. C'est une macro webtest. Vous pouvez également utiliser uniquement la séquence si vous aimez ...
<macrodef name="verifySchema" description="Validate the current document against its schema">
<sequential>
<groovy description="validate schema" >
import javax.xml.parsers.ParserConfigurationException
import javax.xml.parsers.SAXParser
import javax.xml.parsers.SAXParserFactory
import java.io.InputStreamReader
import org.xml.sax.ErrorHandler
import org.xml.sax.InputSource
import org.xml.sax.SAXException
import org.xml.sax.SAXParseException
import org.xml.sax.XMLReader
class MyHandler implements org.xml.sax.ErrorHandler {
void warning(SAXParseException e) throws SAXException {
println 'WARNING: ' + e.getMessage()
}
void error(SAXParseException e) throws SAXException {
println 'ERROR: ' + e.getMessage()
throw e
}
void fatalError(SAXParseException e) throws SAXException {
println 'FATAL: ' + e.getMessage()
throw e
}
}
def factory = SAXParserFactory.newInstance()
factory.setValidating(true)
factory.setNamespaceAware(true)
def parser = factory.newSAXParser()
def reader = parser.getXMLReader()
reader.setErrorHandler(new MyHandler())
def response = step.context.currentResponse.webResponse
reader.parse(new InputSource(new InputStreamReader(response.contentAsStream,"UTF-8")))
</groovy>
</sequential>
Si vous voulez ne pas trop votre test sur les avertissements, ajoutez une instruction throw au gestionnaire en conséquence.