How do I get the response headers in Selenium?
In case someone is still looking for an answer, there is a way to get the response headers using Selenium 4 and Chrome developer tools API
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.responseReceived(),
responseReceived -> {
Headers headers = responseReceived.getResponse().getHeaders();
if (!headers.isEmpty()){
System.out.println("Headers:");
headers.forEach((key,value) -> {
System.out.println(" " + key + "="+ value);
});
}
});
This was tested using Selenium 4 alpha 6
Unfortunately, it doesn't look like you can do that with selenium alone in an automated fashion, as this is against their design principles for selenium. I don't agree that it is (since it supports getting cookie information -- what user actually goes through and parses through their cookies?).
Their 'schtick' is that selenium helps you automate what a user does; since a user doesn't care about the response headers, why would this framework? For me, this is disappointing because I need to ensure the content type being returned is what I believe it should be (to test an API). It appears another Stack Overflow question has come to a similar conclusion.