Комментарии 33
А селениды — это соединения селена с другими элементами.Да только большинство программистов прочтут Selenide не как селениды, а как Selen IDE.
ИМХО.
+2
Спасибо за наводку, попробую.
+1
Молодцы, парни!
Насколько я понял, пока реализовано только соединение с JUnit, планируете сделать варианты с другими тестовыми фреймворками?
Насколько я понял, пока реализовано только соединение с JUnit, планируете сделать варианты с другими тестовыми фреймворками?
0
Спасибо!
На самом деле логика работы Selenide напрямую с JUnit не связана. Её можно использовать и с любыми другими фреймворками, ничего не мешает. Мы же использовали с ScalaTest, например. Едиственное, что Selenide в случае падения теста выкидывает org.junit.Assert#fail, то есть всё-такие требует наличия JUnit в classpath. Но это вроде не должно создавать проблем.
На самом деле логика работы Selenide напрямую с JUnit не связана. Её можно использовать и с любыми другими фреймворками, ничего не мешает. Мы же использовали с ScalaTest, например. Едиственное, что Selenide в случае падения теста выкидывает org.junit.Assert#fail, то есть всё-такие требует наличия JUnit в classpath. Но это вроде не должно создавать проблем.
0
Я имею в виду, что в дополнение к TestWatcher'у, который снимает скриншоты, было бы хорошо сделать аналоги для других тестовых фреймворков.
0
Интересный проект!
А не сталкивались ли вы с проблемой тестирования загрузки файлов?
Вот тут действительно кроссбраузерная реализация одной функцией пригодилась бы!
А не сталкивались ли вы с проблемой тестирования загрузки файлов?
Вот тут действительно кроссбраузерная реализация одной функцией пригодилась бы!
0
Вопрос не в бровь, а в глаз.
Загрузка файлов — это геморрой тот ещё. В самом Selenium нет такой функциональности. Насколько я понимаю, совсем уж кроссбраузерной реализации пока не может быть, во всех браузерах это по-любому будет реализовано по-разному.
У нас есть опыт, когда мы подкюлчали в проект ещё и AutoIT и с помощью него делали загрузку файлов. Но это всё так сложно и ненадёжно, что в Selenide я решил пока это не включать. Загрузку файлов тестируем пока вручную. :(
Загрузка файлов — это геморрой тот ещё. В самом Selenium нет такой функциональности. Насколько я понимаю, совсем уж кроссбраузерной реализации пока не может быть, во всех браузерах это по-любому будет реализовано по-разному.
У нас есть опыт, когда мы подкюлчали в проект ещё и AutoIT и с помощью него делали загрузку файлов. Но это всё так сложно и ненадёжно, что в Selenide я решил пока это не включать. Загрузку файлов тестируем пока вручную. :(
0
Рекомендую ознакомиться вот с этой статьёй: How To Download Files With Selenium And Why You Shouldn’t, в ней обсуждаются различные варианты решения этой задачи.
Я иногда использую ещё один подход, не описанный в этой статье — прокси между браузером и тестируемым приложением, который перехватывает запросы на загрузку файлов и сам их загружает, а в браузер отдаёт страничку «файл загружен, находится тут».
Я иногда использую ещё один подход, не описанный в этой статье — прокси между браузером и тестируемым приложением, который перехватывает запросы на загрузку файлов и сам их загружает, а в браузер отдаёт страничку «файл загружен, находится тут».
+1
Сам бодался с селениумом очень долго. Почти весь код его тоже запроксировали, в основном, правда, использовали PageObject.
Понравилась Ваша обёртка над waitUntil, так держать, если ещё раз столкнусь, обязательно попробую Selenide
Понравилась Ваша обёртка над waitUntil, так держать, если ещё раз столкнусь, обязательно попробую Selenide
0
Селениум — морально устаревший инструмент. Попробуйте: Sahi, и пишите взрослые тесты без костылей. Очень советую
0
500 баксов за штуку?
0
Бесплатный пакет покрывает потребности более чем полностью. Реализуется любая логика, поддерживаются циклы и тп. При небольшом умении и желании результаты тестов сыпятся на почту.
Поднимаются виртуалки, на них конфигурируется среда. И хоть по каждому коммиту гоняй тесты. Тесты можно писать на джаве, руби, питоне. Есть еще много всяких плюшек. Силениум нервно курит со своей дебильной ломоватостью и описанием действий в таблице через xslt. Они бы ещё в цсс выражали бы действия
И если перед вами стоит серьезная задача по тестированию серьезного проекта, то да, 500 за штуку. Для серьезной организации это не деньги.
Поднимаются виртуалки, на них конфигурируется среда. И хоть по каждому коммиту гоняй тесты. Тесты можно писать на джаве, руби, питоне. Есть еще много всяких плюшек. Силениум нервно курит со своей дебильной ломоватостью и описанием действий в таблице через xslt. Они бы ещё в цсс выражали бы действия
И если перед вами стоит серьезная задача по тестированию серьезного проекта, то да, 500 за штуку. Для серьезной организации это не деньги.
+1
ок, спасибо за ответ!
0
Опа-опа. Какой ещё xslt? Какой ещё css?
Вы, наверное, путаете Selenium WebDriver с чем-то другим. В Selenium WebDriver как раз-таки тесты можно писать на джаве, руби, питоне.
Виртуалки поднимать с разными средами можно с помощью Jenkins или ещё чего-нибудь — одним словом, это не задача Selenium.
Вы, наверное, путаете Selenium WebDriver с чем-то другим. В Selenium WebDriver как раз-таки тесты можно писать на джаве, руби, питоне.
Виртуалки поднимать с разными средами можно с помощью Jenkins или ещё чего-нибудь — одним словом, это не задача Selenium.
0
Про цсс — стёб.
Возможно, возможно, я давно пробовал Селениум в качестве средства тестирования, наверное мы говорим о разных вещах :(
Возможно, возможно, я давно пробовал Селениум в качестве средства тестирования, наверное мы говорим о разных вещах :(
0
Если учесть, что Selenium 2.0 (aka WebDriver) релизнулся впервые всего полтора года тому назад — сложно было его «давно пробовать», так что — наверняка о разных :)
0
Да, вы правы, это было около 3х лет назад. Тогда тесты на нём писались просто ужасно.
Судя по тому, как он реализован сейчас они много заимствовали у Sahi за это время)
Судя по тому, как он реализован сейчас они много заимствовали у Sahi за это время)
0
А в чём прикол-то? Половина описаного в 20 строк:
protected WebElement $(String selector) {
return driver.findElement(By.cssSelector(selector));
}
protected WebElement csswait(String selector) {
return waitElement(By.cssSelector(selector));
}
protected WebElement waitElement(final By selector) {
return new WebDriverWait(driver, 10)
.until(new ExpectedCondition<WebElement>() {
public WebElement apply(WebDriver d) {
return d.findElement(selector);
}
}
);
}
0
Простите, не ожидал, что <code> не сработает.
protected WebElement $(String selector) {
return driver.findElement(By.cssSelector(selector));
}
protected WebElement csswait(String selector) {
return waitElement(By.cssSelector(selector));
}
protected WebElement waitElement(final By selector) {
return new WebDriverWait(driver, 10)
.until(new ExpectedCondition<WebElement>() {
public WebElement apply(WebDriver d) {
return d.findElement(selector);
}
}
);
}
0
Ну так наш вариант гораздо короче. В этом и прикол.
-1
Вы не поняли, это выдержка из базового класса, который предоставляет наследникам такие же возможности, как ваша библиотека.
Пример использования:
Пример использования:
public class Users extends Base {
@Test public void listsUsers() {
$("a.users").click();
assertEquals("Users", $wait("h1.user").getText());
assertEquals("Users", driver.getTitle());
assertEquals("All Users", $("#content h2").getText());
$("#content .results #spaceList .result");
...
0
Так что это за базовый класс? Где его найти?
0
Эээ… Так-то это можно про любую библиотеку сказать.
В том-то и прелесть, что этот код не надо дописывать. Зачем писать то, то уже написано?
В том-то и прелесть, что этот код не надо дописывать. Зачем писать то, то уже написано?
0
Этот вопрос до сих пор задаёт себе John Resig, вспоминая Prototype.js.
Просто можно понадеятся на чужую библиотеку, но если работы на час или меньше, то проще написать. А когда уже всё написано самостоятельно, то переписывать весь код тестов под синтаксис новой библиотеки смысл есть только, если что-то радикально сильно улучшается.
В данном случае оба предположения не верны. Можно и написать подобное за час, и ничего радикально не улучшается.
Однако всё равно спасибо, что поделились. Синтаксис выглядит приятно.
Просто можно понадеятся на чужую библиотеку, но если работы на час или меньше, то проще написать. А когда уже всё написано самостоятельно, то переписывать весь код тестов под синтаксис новой библиотеки смысл есть только, если что-то радикально сильно улучшается.
В данном случае оба предположения не верны. Можно и написать подобное за час, и ничего радикально не улучшается.
Однако всё равно спасибо, что поделились. Синтаксис выглядит приятно.
0
Если такой код у вас уже написан, то конечно нет смысла переписывать.
Однако этот факт говорит о том, что библиотека востребована.
Одно предположение у вас неверно: код, который написан в библиотеке, всё-таки не написать за час без ошибок. И даже если написать, зачем каждый раз тратить этот час?
Насчёт «понадеяться»: поскольку исходный код открытый, вы можете сами его посмотреть и убедиться, что там примерно то же, что вы сами бы и написали, а стало быть, можно библиотеке доверять и не тратить в следующий раз своё время.
Однако этот факт говорит о том, что библиотека востребована.
Одно предположение у вас неверно: код, который написан в библиотеке, всё-таки не написать за час без ошибок. И даже если написать, зачем каждый раз тратить этот час?
Насчёт «понадеяться»: поскольку исходный код открытый, вы можете сами его посмотреть и убедиться, что там примерно то же, что вы сами бы и написали, а стало быть, можно библиотеке доверять и не тратить в следующий раз своё время.
+2
Как создать драйвер с определенным профилем через вашу обертку?
0
Можно даже несколькими способами.
Самое простое — создать свой объект WebDriver, какой душе угодно, и приказать Selenide его использовать:
Таким образом можно запускать Selenide вместе с уже существующими тестами, которые используют голый Selenium WebDriver или любой другой фреймворк.
Более продвинутый способ — запустить тесты с параметром "-Dbrowser=com.mycompany.CustomWebDriverProvider". Пример кода см. в Wiki: github.com/codeborne/selenide/wiki/How-Selenide-creates-WebDriver
Самое простое — создать свой объект WebDriver, какой душе угодно, и приказать Selenide его использовать:
WebDriverRunner.setWebDriver(myWebDriver).
Таким образом можно запускать Selenide вместе с уже существующими тестами, которые используют голый Selenium WebDriver или любой другой фреймворк.
Более продвинутый способ — запустить тесты с параметром "-Dbrowser=com.mycompany.CustomWebDriverProvider". Пример кода см. в Wiki: github.com/codeborne/selenide/wiki/How-Selenide-creates-WebDriver
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Selenide: удобные тесты на Selenium WebDriver