##在使用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(" List of log entries: "); 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(" status code: " + status);