Sto tentando di utilizzare REST Assured per controllare alcune proprietà su un documento HTML restituito dal mio server. Un SSCCE dimostrando il problema sarebbe la seguente:Controllo del documento HTML con REST Assured
import static com.jayway.restassured.path.xml.config.XmlPathConfig.xmlPathConfig;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import com.jayway.restassured.path.xml.XmlPath;
public class HtmlDocumentTest {
@Test
public void titleShouldBeHelloWorld() {
final XmlPath xml = new XmlPath("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
+ "<head><title>Hello world</title></head><body></body></html>")
.using(xmlPathConfig().with().feature("http://apache.org/xml/features/disallow-doctype-decl", false));
assertThat(xml.get("//title[text()]"), is("Hello world"));
}
}
Ora, questo tentativo finisce in com.jayway.restassured.path.xml.exception.XmlPathException: Failed to parse the XML document
causati da, fuori tutti i possibili errori, java.net.ConnectException: Connection timed out
dopo circa 30 secondi o giù di lì!
Se si rimuove la linea con xmlPathConfig().with().feature(...)
, il test ha esito negativo immediatamente a causa di DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true.
.
Se rimuovo la riga doctype dal documento l'analisi ha esito positivo ma il test non riesce su un errore di asserzione, "Expected: is "Hello world" but: was <Hello worldnull>
" - tuttavia, questo è un problema diverso, ovviamente (ma sentiti libero di dare istruzioni anche su quello ...). E la rimozione del doctype non è comunque un'opzione per me.
Quindi, domanda: come si controllano le proprietà di un documento HTML con un doctype utilizzando REST Assured? Dice in the documentation che "REST i parser predefiniti dei provider garantiti per ad esempio HTML, XML e JSON.", ma non riesco a trovare alcun esempio su come esattamente attivare e lavorare con quel parser HTML! Non esiste una classe "HtmlPath
" come ad esempio c'è XmlPath
e quell'eccezione di timeout è molto sconcertante ...
fresco, grazie! Sembra funzionare come un incantesimo, sono felice di premiarti la taglia. :) Un'ulteriore domanda, però, se non ti dispiace: con la sintassi di accesso alle proprietà, è possibile in alcun modo trovare un elemento con un determinato ID o classe e quindi asserire il suo contenuto? – ZeroOne
@vedi risposta aggiornata sopra. –
Ok, grazie! Anche qui, hai un upvote. :) – ZeroOne