среда, 24 февраля 2016 г.

Отправить запрос из сессии Selenium WD

Отправить запрос из сессии Selenium WD.


Собственно тут все просто,иногда вместо того чтобы открывать какие то страницы во время функциональных тестов на WD,нужно достать какие нибудь данные используя текущую сессию.(инфа о пользователе или еще что нить такое).

Сделать это вроде как просто,но я не нашел ничего подобного на просторах интернета.

Вот мой вариант

 
public Elements sendRequest(String host, String path, String select) {
       HttpGet get;
        Set cookieSet = driver.manage().getCookies();
        try {
            get = new HttpGet(new URIBuilder().setPath(path).build());
            CookieStore cookieStore = new BasicCookieStore();
            HttpClientContext context = HttpClientContext.create();
            RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BEST_MATCH).build();
            cookieSet.forEach(cookie -> cookieStore.addCookie(new ApacheCookie(cookie.getName(), cookie.getValue(), cookie.getPath(), cookie.getExpiry())));
            HttpResponse response = HttpClients.custom().setRedirectStrategy(new LaxRedirectStrategy()).setDefaultRequestConfig(globalConfig)
                    .setDefaultCookieStore(cookieStore).build().execute(get, context);
            Elements elements = Jsoup.parse(EntityUtils.toString(response.getEntity(), "UTF-8")).select(select);
            return elements;
        } catch (Exception e) {
                e.printStackTrace();
        }
        return null;
    }

Вроде все просто,как я и говорил)