Здрасьте!
Хорошие новости: вышла новая версия 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