Following Hyperlinks
Problem
You want to obtain hyperlinks, simulate clicking on them, and test that the correct response is returned.
Solution
Use the WebResponse.getLinkWith( )
method to obtain a
WebLink
object, then call
WebLink.getRequest( ) to get a new
WebRequest that you can execute. Executing this
second request simulates the user clicking on the link.
Discussion
The HTTP protocol is a series of requests and responses. Following a hyperlink is merely a case of issuing an HTTP GET request and checking the response. As you are adding new links to your web application, you should attempt to write a test first. The first time you run the test, it fails because the link does not exist. Here is a test that obtains a hyperlink and then attempts to follow it:
public void testFollowLinkToSubscriptionPage( ) throws Exception {
// get the home page
WebConversation webConversation = new WebConversation( );
WebResponse response = webConversation.getResponse(
"http://localhost:8080/news");
WebLink subscriptionLink = response.getLinkWith("subscription");
// get a request to simulate clicking on the link
WebRequest clickRequest = subscriptionLink.getRequest( );
// throws HttpNotFoundException if the link is broken
WebResponse subscriptionPage =
webConversation.getResponse(clickRequest);
}The WebResponse.getLinkWith( ) method searches for
the first hyperlink in the web page that contains some piece of text.
In our example, we are searching for a link like this:
<a href="someUrl">subscription</a> ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access