2016-08-23 4 views
1

Как определить статус HTTP после перехода на какую-либо страницу с помощью intern?Intern/Leadfoot: Как получить код состояния HTTP

this.remote.get('http://google.de') // status 200 
this.remote.get('http://google.de/alsdflasdf') // 404 Not Found 
+0

Лучше способ всегда утверждать, чтобы проверить, существует ли определенный элемент на странице после запуска веб-приложения или проверить название страницы. Selenium не возвращает код состояния. [Есть хаки, чтобы получить его, хотя. но никогда не рекомендуется] –

+0

Хм, мне нужно с определенной целью утверждать, что страница возвращает 404 Not Found. На этой странице нет надежных элементов, с которыми я мог бы проверить ... – Kiechlus

ответ

2

Так вот hack..Use BrowserMob прокси и отправить свои запросы через прокси-сервер и BrowserMob этих прокси даст вам все соответствующие коды состояния, которые вы хотите иметь.
Вот пример кода, который использует browsermob прокси для сохранения последнего кода ответа на переменной:

int lastResponseCode; 

    ProxyServer server = new ProxyServer(8888); 
    server.start(); 

    server.addResponseInterceptor(new HttpResponseInterceptor() { 
     @Override 
     public void process(HttpResponse response, HttpContext context) throws HttpException, 
IOException { 
     lastResponseCode = response.getStatusLine().getStatusCode(); 
     } 
    }); 

    DesiredCapabilities caps = new DesiredCapabilities(); 
    caps.setCapability(CapabilityType.PROXY, server.seleniumProxy()); 
    WebDriver driver = new FirefoxDriver(caps); 

И причина, почему коды статуса никогда не будет поддерживаться в селеном WebDriver здесь: https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/141