##在使用chromedriver的时候 并没有提供api来获取访问页面的状态码,但是可以打开日志来获取到
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
全部代码如下:
ChromeOptions options = new ChromeOptions();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
options.addArguments("headless");
//禁用沙盒nage
options.addArguments("no-sandbox");
options.addArguments("disable-gpu");
cap.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(cap);
driver.get("https://www.baidu.com");
String currentURL = driver.getCurrentUrl();
LogEntries logs = driver.manage().logs().get("performance");
int status = -1;
System.out.println("\nList of log entries:\n");
for (Iterator<LogEntry> it = logs.iterator(); it.hasNext(); ) {
LogEntry entry = it.next();
try {
JSONObject json = JSON.parseObject(entry.getMessage());
System.out.println(json.toString());
JSONObject message = json.getJSONObject("message");
String method = message.getString("method");
if (method != null&& "Network.responseReceived".equals(method)) {
JSONObject params = message.getJSONObject("params");
JSONObject response = params.getJSONObject("response");
String messageUrl = response.getString("url");
if (currentURL.equals(messageUrl)) {
status = response.getInteger("status");
System.out.println("---------- bingo !!!!!!!!!!!!!! returned response for "+ messageUrl + ": " + status);
System.out.println("---------- bingo !!!!!!!!!!!!!! headers: "+ response.get("headers"));
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("\nstatus code: " + status);