Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Apr 22 16:37

    asolntsev on gh-pages

    released Selenide 5.20.4 (compare)

  • Apr 20 17:11

    asolntsev on gh-pages

    released Selenide 5.20.3 (compare)

  • Apr 15 21:46

    asolntsev on gh-pages

    upgrade to Selenide 5.20.2 (compare)

  • Apr 02 06:57

    asolntsev on gh-pages

    Update 2019-12-10-advent-calend… Merge pull request #15 from sva… (compare)

  • Apr 02 06:57
    asolntsev closed #15
  • Apr 01 22:31
    svasenkov opened #15
  • Mar 26 07:26

    asolntsev on gh-pages

    rename release to Selenide 5.20… (compare)

  • Mar 24 21:25

    asolntsev on gh-pages

    rename release to Selenide 5.20… (compare)

  • Mar 24 21:17

    asolntsev on gh-pages

    publish Selenide 5.20.0 release… (compare)

  • Mar 24 21:14

    asolntsev on gh-pages

    publish Selenide 5.20.0 release… (compare)

  • Feb 24 09:05

    asolntsev on gh-pages

    add appium notice (compare)

  • Feb 24 08:34

    asolntsev on gh-pages

    publish release notes for Selen… (compare)

  • Feb 23 23:04

    asolntsev on gh-pages

    publish release notes for Selen… (compare)

  • Feb 17 09:58

    asolntsev on gh-pages

    fix typo (compare)

  • Feb 13 17:15

    asolntsev on gh-pages

    fix link to littleproxy release… (compare)

  • Feb 12 07:08

    asolntsev on gh-pages

    publish Selenide 5.18.1 release… (compare)

  • Feb 11 22:03

    asolntsev on gh-pages

    publish Selenide 5.18.1 release… (compare)

  • Feb 06 20:45

    asolntsev on gh-pages

    fix broken link (compare)

  • Jan 27 21:17

    asolntsev on gh-pages

    add "Severstal" to Selenide use… (compare)

  • Jan 25 21:42

    asolntsev on gh-pages

    add "Whimstay" to Selenide users (compare)

Boris Osipov
@BorisOsipov

а зачем было городить это все вот так.
кажется, что проще было бы

    public static By idEnds(String idPart) {
        return By.css"[id$='" + idPart + "']";
    }

и потом

SelenideElement sortModal = root.$(idEnds("_main-table-sort-modal"));

??

velios
@velios
Да, так гораздо круче и универсальнее, спасибо, пойду перепишу =)
velios
@velios
Какие селекторы предпочтительнее использовать? byId-style или By.id-style ? Для чего их вообще два набора?
Andrei Solntsev
@asolntsev
@velios Да особо незачем. По мне так, селениумовский By.id ок.
  1. Но один чел делал порт селенида на .NET, и он говорил, что By создавал ему какие-то проблемы, и попросил добавил аналогичные методы Selectors.byId и т.д.
  2. И был ещё такой аргумент, что новичку сложнее учить и селенид, и селением, поэтому лучше, чтобы все эти методы были в селениде.
На мой взгляд, оба аргумента стрёмные, но я тогда поддался. :)
@velios Твой ensureHaveSize - это ведь по сути не команда (Command), а проверка (Condition).
Её бы лучше переделать на $(…).shouldHave(mySize(5))
И Awaitility.with там нужно, потому что селенид и так ведь умеет ждать. Вместо него достаточно просто написать trs.first().find("td.no-data”).shouldNotBe(visible) и trs.shoudHave(size(size)).
velios
@velios
Возможно ли внутри ElementsCondition.findBy и .FilterBy использовать лямбды для поиска хитровложенных элементов?
velios
@velios

@asolntsev Недавно упоминали возможность метода execute для EllementCollection, мог бы пригодиться чтобы переписать такой блок во что-нибудь приличное, например trs.execute(firstNotEmptyCell(int columnIndex))

Сейчас в коде делаю это так

// Берем текст из первой не пустой ячейки в соответствующем столбце
            int finalI = i;
            SelenideElement cell =
                    trs
                            .stream()
                            .filter(tr -> tr.findAll("td").get(finalI)
                                    .has(and("Первая заполненная ячейка", not(empty), not(text(EMPTY_NAME)))))
                            .findFirst()
                            .orElseThrow(() -> new IllegalArgumentException("Столбец не содержит ни одной заполнненой ячейки"))
                            .findAll("td")
                            .get(i);

trs - это EllementsCollection из <tr> элементов

Думал изначально для этого использовать filterBy или findBy, но туда нельзя передать лямбду

velios
@velios

Еще execute для EllementCollection был бы крут, чтобы реализовать аналог функции map из функциональных языков. Например, чтобы вернуть все ячейки первой колонки можно было бы использовать

trs.execute(map(tr -> tr.findAll("td").get(i)))
// В результате бы получился список из ячеек
    .findBy(text(text))
    .getText();

Сейчас как такие задачи "правильно решать" без steam() ?

Andrei Solntsev
@asolntsev
Что-то я запутался в этих лямбдах. Реально сложно. :(
Я бы вообще искал нужный элемент сразу одним XPath’ом. Пусть он и получится, может, сложноватыми (хотя не факт), но зато быстро и надёжно.
А все эти хождения по стримам могут быть просто медленными, если элементов много.
rabidka
@rabidka
Доброго времени суток. А ни у кого нет проблем с WDM? Selenide 5.9, chrome 84, автоматом качает 81 драйвер, он не работает с 84. Если явно задать 83 - работает.
Andrei Solntsev
@asolntsev
У всех есть :))
мне помогла такая команда: rm -fr ~/.m2/repository/webdriver/resolution.properties
Я завёл багу в WDM: bonigarcia/webdrivermanager#483
Andrei Solntsev
@asolntsev

Вышла Selenide 5.13.0: "Вначале была подстрока”

https://ru.selenide.org/2020/07/08/selenide-5.13.0/

Andrei Solntsev
@asolntsev

Мы зарелизили Selenide 5.14.0: “Стабильный FOLDER”

https://ru.selenide.org/2020/08/17/selenide-5.14.0/

Zychkov
@Zychkov
Всем привет! Столкнулся со следующей проблемой - перестали запускаться тесты, падают с ошибкой org.openqa.selenium.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 85. Причем данная ошибка возникает вне зависимости от того, какой параметр Configuration.browser в Before задан. Т.е. задаю Configuration.browser="firefox", но тесты падают с вышеуказанной ошибкой. Пробовал добавлять System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"), но при запуске через gradle ошибка остается. Пробовал обновил версию selenide - без изменений. Фрейм cucumber + selenide + junit. Может кто сталкивался с подобной ошибкой?
Andrei Solntsev
@asolntsev
Конечно. Наверняка кукумбер пытается открыть браузер ДО того, как ты проставляешь browser="Firefox".
Andrei Solntsev
@asolntsev
Доброе утро!

Мы выпустили Selenide 5.15.0: "Обкликайся и обкачайся!"

https://t.co/a4Fjj0udWB

Dmitry Munda
@dimkin-eu

Доклад “Flaky tests. Метод” - для опытных

это повтор будет или новые бонусы из тестов ? :)

Andrei Solntsev
@asolntsev
Смотря чего повтор :)
Andrei Solntsev
@asolntsev

Вышла Selenide 5.16.0:
"Плагины и сообщения об ошибках”

https://ru.selenide.org/2020/11/20/selenide-5.16.0/

Andrei Solntsev
@asolntsev

Вышла Selenide 5.16.2: "Багфиксы с антресолей"

https://ru.selenide.org/2020/11/25/selenide-5.16.2/

getloud
@getloud
Может кто то сталкивался с такой проблемой "No webdriver is bound to current thread: 1. You need to call open(url) first." после перехода на 5 версию не могу ранить тесты
1 reply
Andrei Solntsev
@asolntsev
Ну конечно сталкивался!
Andrei Solntsev
@asolntsev
Вышла Selenide 5.17.0: “Ho-ho-ho, Page Objects!”
https://ru.selenide.org/2020/12/26/selenide-5.17.0/
Andrei Solntsev
@asolntsev
Вышла Selenide 5.18.1: "Локалхост - нежная штучка!”
https://ru.selenide.org/2021/02/11/selenide-5.18.1/
Andrei Solntsev
@asolntsev

Вышла Selenide 5.19.0: “День независимости”

https://ru.selenide.org/2021/02/24/selenide-5.19.0/

Ivan
@Proterians
Всем привет!
Может есть кто сталкивался с проблемой, когда scrollIntoView() не докручивает страницу до элемента?
Andrei Solntsev
@asolntsev
Я не сталкивался
Mykola Zubrytskyi
@mr3y6p
Всем привет. Приходилось ли кому то отправлять HTML файл на Selenoid и уже на нем открывать с помощью Selenide?
Andrei Solntsev
@asolntsev
Не понял. А зачем?
Тебе нужно вызвать $.uploadFile()?
Mykola Zubrytskyi
@mr3y6p
$.uploadFile() это если мы в инпут хотим загрузить файл. У меня задача немного другая. Я генерирую html с некоторыми скриптами для тестирования функциональности. И далее мне нужно открыть эту html и уже работать с ней как с обычной страницей (нажимать на кнопки, вводить текст и т.п.)
Boris Osipov
@BorisOsipov

@mr3y6p Привет! Технически аплоад файлов через $.uploadFile() под капотом селениума это 2 операции.
1) аплоад файла в контейнер с браузером
2) установка в инпут для аплоада пути к файлу внутри контейнера.

т.е. взяв любой http клиент ты можешь выполнить пункт 1 и загрузить файл html и потом открыть его в браузере.

пример аплоада на js\wdio https://gist.github.com/BorisOsipov/2bcacf117da1bf3a11363608aafd1353

Andrei Solntsev
@asolntsev
А зачем вообще загружать свои html-файлы в селеноид, почему бы их не открывать прямо со своей машины?
Boris Osipov
@BorisOsipov
ну тогда их надо сервить каким-нить http веб сервером
Andrei Solntsev
@asolntsev
да, и это ведь очень просто.
Boris Osipov
@BorisOsipov
просто пока твои тесты и сервер c селеноид в одной сети :)
Andrei Solntsev
@asolntsev
Да, ну так может, в одной?
Boris Osipov
@BorisOsipov
может быть. но положить на /file на гриде будет работать везде
я просто предугадываю что если там селеноид, то может быть проблема с сетью как с проксей
Andrei Solntsev
@asolntsev
Это да, наверняка.