Изменения в Selenide 2.15

Изменения в Selenide 2.15

Sizzle селекторы, multifile upload, BrowserMob proxy, zoom, Selenium 2.44.0
03.11.14

Здрасьте!

Хорошие новости: вышла новая версия Selenide 2.15. На сей раз нас ждёт много нового. Садитесь поудобнее, начинаем обзор новинок!

Sizzle селекторы (CSS3)

Теперь в Selenide можно использовать CSS3 селекторы для поиска элементов!

Например:

$(":contains('Tere Martin!')").shouldBe(visible);
$(":not(a#id)");
$$(":not(div,p)").shouldHave(size(3));
$("[value!='johnny']");
$("div:has(span)");
$(":input");
$(":text");
$(":checkbox");
$(":file");
$(":password");
$(":image");
$(":header");
$(":first");
$(":last");
$(":even");

Возможность пока новая и мало исследованная, поэтому по умолчанию она выключена. Включить её можно такой командой:

Configuration.selectorMode = Sizzle;

Попробуете - расскажите, как получилось.

Загрузка многих файлов (multifile upload)

Теперь функции $.uploadFile() и $.uploadFileFromClasspath() могут принимать несколько аргументов. То есть с помощью Selenide можно загружать несколько файлов! В стандартном Selenium webdriver этой функции нет и в ближайшее время не предвидится, поэтому нам пришлось реализовать эту возможность с помощью чёрной магии и напильника. Попробуйте!

Поддержка BrowserMob proxy

Мы добавили в Selenide удобную возможность добавлять в вебдрайвер Proxy сервер. В первую очередь это было сделано, конечно, ради BrowserMob proxy - популярного среди тестировщиков инструмента. Он позволяет перехватывать http-запросы между веб-приложением и браузером, что даёт массу дополнительных возможностей, недоступных в чистом Selenium webdriver:

  • загрузка файлов с сервера,
  • работа с сайтами, требующими авторизации,
  • проверка кодов ответа на HTTP-запросы,
  • и т.д.

Подробнее о BrowserMob Proxy можно узнать в замечательном докладе Алексея Баранцева.

Спасибо Владимиру Денисову за этот pull request!

Пример использования BrowserMob Proxy в связке с Selenide можно найти в тесте ProxyServerUsageTest.java:

ProxyServer proxyServer = new ProxyServer(findFreePort());
proxyServer.start();
proxyServer.newHar("google-test");
WebDriverRunner.setProxy(proxyServer.seleniumProxy());

open("http://google.com");

List<HarEntry> harEntries = proxyServer.getHar().getLog().getEntries();
assertTrue(harEntries.get(0).getRequest().getUrl().equals("http://google.com"));


Теперь можно зумить страницу!

Примеры использования, опять же, смотрим в тестах:

import static com.codeborne.selenide.Selenide.*;

zoom(2.0); // Увеличить зум вдвое
zoom(0.5); // Уменьшить зум вдвое

Иногда полезно для тестирования responsive design.

Поддержка JSON и iCal

Теперь можно открывать не-html страницы.

Раньше Selenide грохался при попытке открыть не-HTML страницу. Теперь работает.

Это может быть полезно для тестирования json, iCal и т.п. ресурсов. Другой вопрос, что может, такие вещи лучше тестировать другими средствами, но иногда удобно.

assertThat(source(), containsString("DTSTART:20140409T090000"));

Поддержка табов и фреймов

Теперь Selenide позволяет легко переключаться между вкладками и фреймами не только по заголовку (title), но и по индексу (0, 1, 2, …).

Примеры работы с фреймами:

switchTo().frame(0);
assertTrue(source().contains("Hello, WinRar!"));

switchTo().defaultContent();
switchTo().frame(1);
$("h1").shouldHave(text("Page with dynamic select"));

Примеры работы со вкладками:

switchToWindow(1); 
$("h1").shouldHave(text("Page with JQuery"));

switchToWindow(2); 
$("h1").shouldHave(text("File uploads"));

switchToWindow(3); 
$("h1").shouldHave(text("Page with alerts"));

switchToWindow(0); 
$("h1").shouldHave(text("Tabs"));

Поддержка Allure Framework

Добавилась функция для получения скриншота в виде файла:

import static com.codeborne.selenide.Screenshots.getScreenShotAsFile;

File screenshot = getScreenShotAsFile();

Эта функция понадобится для интеграции с Allure Framework.

Спасибо Владимиру Денисову за этот pull request!

Обновились до Selenium 2.44.0.

  • Внимание, вместе с этим обновилась и версия библиотеки Google Guava до 18.0.
  • С этой версией перестал работать PhantomJS :( Я уже сделал Pull Request в ghostdriver, теперь ждём, когда его зарелизят.


А что у вас новенького?


03.11.14