Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • May 12 19:54

    asolntsev on gh-pages

    add Raiffeisen bank to Selenide… (compare)

  • May 12 19:51

    asolntsev on gh-pages

    add Raiffeisen bank to Selenide… (compare)

  • May 12 19:42

    asolntsev on gh-pages

    add Perekrestok to Selenide use… (compare)

  • May 12 19:36

    asolntsev on gh-pages

    add CFT to Selenide users (compare)

  • May 11 06:47

    asolntsev on gh-pages

    fix link https://www.accenture.… (compare)

  • May 10 14:24

    asolntsev on gh-pages

    fix link tele2.ru doesn't resp… (compare)

  • May 10 08:00

    asolntsev on gh-pages

    add Accenture to Selenide users (compare)

  • May 09 15:57

    asolntsev on gh-pages

    add Rostelekom to Selenide users (compare)

  • May 09 15:48

    asolntsev on gh-pages

    add Encoding.com to Selenide us… (compare)

  • May 09 15:42

    asolntsev on gh-pages

    add G-Plans to Selenide users (compare)

  • May 07 08:15

    asolntsev on gh-pages

    add Lazada to Selenide users (compare)

  • May 06 06:43

    asolntsev on gh-pages

    add Tele2 to Selenide users (compare)

  • May 06 06:28

    asolntsev on gh-pages

    add SavvyMatics to Selenide use… (compare)

  • May 05 20:15

    asolntsev on gh-pages

    add Qiwi to Selenide users (compare)

  • May 05 17:44

    asolntsev on gh-pages

    add PointPay to Selenide users (compare)

  • May 04 19:27

    asolntsev on gh-pages

    add Детский мир to Selenide use… (compare)

  • May 04 17:35

    asolntsev on gh-pages

    add Tango Me to Selenide users (compare)

  • May 04 17:26

    asolntsev on gh-pages

    add Softswiss to Selenide users (compare)

  • May 04 17:18

    asolntsev on gh-pages

    add Glonass mobile to Selenide … (compare)

  • May 04 17:07

    asolntsev on gh-pages

    add Virtual Health to Selenide … (compare)

wasder
@wasder
Привет! Есть ли в селениде сейчас возможность использовать thread-safe конфиги? Нашел старый исус selenide/selenide#252 но он похоже так и не был решен.
Andrei Solntsev
@asolntsev
Прямо такого нет. Исходим из предположения, что в здоровой ситуации это не должно быть нужно.
Но нечто подобное реализовали в версии 5.0.0: https://ru.selenide.org/2018/10/10/selenide-5.0.0/
wasder
@wasder

У нас похоже не здоровая ситуация значит :). Пишем тесты на апиум под iOS, появилась необходимость их паралелить. паралельность достигается за счёт запуска на разных симуляторах, для этого апиуму нужно отправлять разные капабилити.
если запускать драйвер рекомендуемым способом:

Configuration.browserCapabilities = desiredCapabilities;
Configuration.browser = IOSProvider.class.getName();

то тогда первые тесты все ломятся на один симулятор и падают.

Andrei Solntsev
@asolntsev
Ну так если у вас свой провайдер, он может каждый раз создавать нужные капабилити.
Zahorodnii
@Zahorodnii
Всем привет, была ли идея сохранять локаторы в SelenideElements? Например $("someCss").getWrappedLocator(), public By getWrappedLocator() { ... }
Потому, что сейчас нужно писать костыли, в виде $("someCss").getWrappedElement().toString() и дальше парсить
Boris Osipov
@BorisOsipov
не понятно зачем они нужны? зачем получать через toString() и дальше парсить ?,
Zahorodnii
@Zahorodnii
например для перезагрузки елемента, у нас есть коллекция каких либо блоков со свойствами, делаем через map преобразование в коллецию каких либо объектов, коллекция перезагружаеться, ловим stale reference, её можно обработать с помощью AOP, и перезагрузить внутренний елемент
Andrei Solntsev
@asolntsev
Whaaaaaaaaat?
Zahorodnii
@Zahorodnii
сложно обьяснить, да)
я без понятия как показать, скрины вряд ли с проекта кидать буду
Andrei Solntsev
@asolntsev
Нет, я примерно понимаю, что вы делаете,
Но не понимаю - нафига такие сложности?
Zahorodnii
@Zahorodnii
сложности?
предлагаешь создавать заново тучу объектов, вместо того что бы перезагрузить элемент? так ведь перформанс просидает
Zahorodnii
@Zahorodnii
попробую объяснить, есть например GiftPageComponent принимающий giftItem в конструкторе, в GiftPageComponent методы аля getTitle() { giftItem.$("...") } и т.д., собираеться коллекция из GiftPageComponent-ов, мы чегото меняем, перезагружаем страницу или блок, ловим StaleReference, обрабатываем AOP, перезагружаем элемент. Что бы все работало нужно создавать и хранить какой то индетификатор по которому найду и перезагружу giftItem, когда мог бы просто сделать giftItem = $(giftItem.getWrappedLocator());
Boris Osipov
@BorisOsipov
можете сделать пример кода, хотя бы который даже не падает? я примерно понял что вы хотите, но я не понимаю как должно помочь giftItem = $(giftItem.getWrappedLocator()); - какая разница какой там элемент, перепоиск элемента сработать должен и без переприсваивания ссылки на новый элемент
я к тому что
1)element = driver.findElement("")
и
2)element = $("")
это не одно и тоже.
в первом случае, да всегда будет StaleReference на попытку element.findElement() при перезагружаем страницу или блок
во втором element.$("") должен перенайти элемент и не падать с StaleReference
Andrei Solntsev
@asolntsev
Именно. Селеридовский $() и так перегружает элемент. Не надо никаких aop.
Zahorodnii
@Zahorodnii
во втором element.$("") - а вот как раз таки падает, я бы с удовольствием не писал данный код, если бы не падало
и да, сразу скажу, селенид последней версии
Zahorodnii
@Zahorodnii

Именно. Селеридовский $() и так перегружает элемент. Не надо никаких aop.

Selenide.$("") и SelenideElemen.$("") имеют разную логику? Потому, что судя по всему SelenideElement.$("") не перезагружает

Andrei Solntsev
@asolntsev
Конечно перегружает. Да, у них одинаковая логика.
Andrei Solntsev
@asolntsev
Если у вас не так, заводите issue на гитхабе и наполняйте конкретикой: какая именно ошибка падает, код для воспроизведения и т.д.
Zahorodnii
@Zahorodnii
окей, спасибо
tanaka
@fresherr
не могу понять как прикрутить капабилити к дефолтному браузеру селениде
пробивал DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, "–disable-notifications");
Configuration.browserCapabilities = capabilities;
Andrei Solntsev
@asolntsev
@/all вы зарелизили Selenide 5.8.0!
Dmitry Munda
@dimkin-eu
Селенид ведь как скачивает файылы
файылы
Andrei Solntsev
@asolntsev
@dimkin-eu Тебе показалось. :) :)
Dmitry Munda
@dimkin-eu
аттеншан ту дитэйлз :). ( ну и хоть кто-то читает бложик :D )
Oleksii Cherevatyi
@JustAlexOne
Всем привет. Не знаю, может уже предлагалось ранее, но хочу предложить.
А не пора ли в селениде запилить универсальный метод локации элемента?
Ну то есть, что можно было делать $("some css locator") и тем же методом $("some xpath locator").
Предпослыка - в chrome devtools например, во вкладке Elements, поиск работает как раз одинаково, независимо от типа локатора (думаю под капотом он там как-то определяет тип локатора)
По факту, такое можно сделать и в селениде - вопрос - нужно ли?
Andrei Solntsev
@asolntsev
Под “универсальный” ты ведь имеешь в виду только один из двух, так? (css или xpath)
По идее можно было бы запилить, если по строке всегда можно однозначно определить, это css или xpath. Я слышал, что когда-то в Thucidydes была такая фича, и с ней были проблемы: иногда он неправильно определял. Но сам я этот вопрос детально не изучал.
Однажды мне скинули для примера код, который вроде как умеет определять, CSS или Xpath:
sergueik/selector_validators@479f35a
Dmitry Munda
@dimkin-eu
wdio кушает в $/$$ любой селектор без явного указания что это ( а потом транслирует всё в xpath )
Oleksii Cherevatyi
@JustAlexOne
image.png
Как раз у меня был открыт пример с Serenity (aka Thucidydes), и там они проверяют по локатору - это xpath или нет, и потом дёргают соответствующий find метод
определяют через javax.xml.xpath.XPathFactory
не знаю, насколько стабильно она будет отличать css от xpath-a

wdio кушает в $/$$ любой селектор без явного указания что это ( а потом транслирует всё в xpath )

ну вот да, тут тож есть варианты - как это реализовать - либо всё в xpath транслировать, либо как я описал - определять тип локатора и вызывать соответствующий метод. Как по мне - транслировать всё в xpath - это overhead

Dmitry Munda
@dimkin-eu
а как искать-то элемент ? а xpath ~всё стерпит~ всё найдёт
Andrei Solntsev
@asolntsev
@JustAlexOne Хм… А вот про javax.xml.xpath.XPathFactory я и не подумал… Похоже, вполне себе вариант.
@dimkin-eu Нет, зачем транслировать. Если это xpath - искать по xpath, а если это css - искать по css.
И остаётся вопрос, не существует ли такой строки, которая была бы одновременно и валидным CSS, и валидным XPath.