Where communities thrive


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

    asolntsev on gh-pages

    fix typo (compare)

  • Nov 26 19:22

    asolntsev on gh-pages

    publish Selenide 6.1.1 release … (compare)

  • Nov 25 21:47

    asolntsev on gh-pages

    publish Selenide 6.1.0 release … (compare)

  • Nov 25 07:30

    asolntsev on gh-pages

    publish Selenide 6.1.0 release … (compare)

  • Oct 27 07:46

    asolntsev on gh-pages

    release Selenide 6.0.3 (compare)

  • Oct 26 09:13

    asolntsev on gh-pages

    release Selenide 6.0.2 (compare)

  • Oct 25 21:51

    asolntsev on gh-pages

    release Selenide 6.0.1 (compare)

  • Oct 25 17:56

    asolntsev on gh-pages

    release Selenide 6.0.1 (compare)

  • Oct 19 05:26

    asolntsev on update_docs

    (compare)

  • Oct 19 05:26

    asolntsev on gh-pages

    Update docs to v6 Merge pull request #16 from sel… (compare)

  • Oct 19 05:26
    asolntsev closed #16
  • Oct 19 05:25
    asolntsev review_requested #16
  • Oct 19 05:25
    asolntsev assigned #16
  • Oct 18 15:40
    BorisOsipov opened #16
  • Oct 18 15:39

    BorisOsipov on update_docs

    Update docs to v6 (compare)

  • Oct 04 20:42

    asolntsev on gh-pages

    fix old typo (compare)

  • Oct 04 11:37

    asolntsev on gh-pages

    update logo and description of … (compare)

  • Sep 30 12:24

    BorisOsipov on gh-pages

    Update 2021-09-28-selenide-5.25… (compare)

  • Sep 28 20:53

    asolntsev on gh-pages

    update gem (compare)

  • Sep 28 20:53

    asolntsev on gh-pages

    publish Selenide 5.25.0 release… (compare)

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.
Dmitry Munda
@dimkin-eu
Andrei Solntsev
@asolntsev
Хм… Я был на этом SeleniumCamp, но на тот доклад не ходил :)
@dimkin-eu Ну, а… как нам это видео помогает?
Dmitry Munda
@dimkin-eu
там на определённый кусок ссылка - где автор всё приводит к базовой задаче - найди элемент
Oleksii Cherevatyi
@JustAlexOne

И остаётся вопрос, не существует ли такой строки, которая была бы одновременно и валидным CSS, и валидным XPath.

я тоже задаюсь этим вопросом. И по большому счёту - это не проблема - если они оба валидны, то найдётся по тому методу, который был первый в очереди ( я бы первым сделал css) ;)
Но я в таком варианте вижу пока одно НО - если допустим, есть такая строка, которая является и валидным и xpath, и валидным css, то тогда может не сработать проверка на то, что на паренте вызывают xpath без точки вначале - типа $("parent").$("/some_xpath") - в таком варианте, если пойдёт по css ветке, то не отработает проверка на то, что xpath должен начинаться с точки

хотя опять-таки, если локатор начинается с "/some_locator" - то это уже точно не валидный css локатор, следовательно - это точно xpath :) - и вызовется проверка на xpath starting with slash
Boris Osipov
@BorisOsipov

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

ничего он не транслирует в xpath

вообще ни разу. а сначала пытается найти что это за селектор, а если не нашел считает что это css
Dmitry Munda
@dimkin-eu

https://youtu.be/jOmvPpzLMf8?t=1269

what wdio does here in background - creates XPath and runs it

Boris Osipov
@BorisOsipov
да хрен с ним что Криштан там говорит если есть сорцы)
а да вижу, кое-чего он в xpath превращает
но ограничено офк
Dmitry Munda
@dimkin-eu
но вопрос в другом-то
скармливать $/$$-ам что угодно, а @asolntsev пусть разбирается :D
Oleksii Cherevatyi
@JustAlexOne
image.png
Как минимум - валидным css и xpath - будет "*". И что интересно, если искать один элемент, типа \$("звёздочка") и \$x("звёздочка"), то оба находят одинаковый элемент - всю страничку. А вот если искать коллекцию, через \$\$("звёздочка") или \$\$x("звёздочка"), то xpath находит коллекцию с одним элементом, а css находит все элементы
Boris Osipov
@BorisOsipov

скармливать $/$$-ам что угодно, а @asolntsev пусть разбирается :D

именно поэтому я не тащу это из wdio в селенид. там сделать то не сложно. но мне не понятно валидна ли регулярка из wdio для xpath во всех кейсах

с другой стороны в wdio давно это есть и вроде не сильно народ жалуется
если кому-то интересно в вдио вот реализация
(учитывайте что там много селекторов не для веба)
Oleksii Cherevatyi
@JustAlexOne

если кому-то интересно в вдио вот реализация

интересно, то есть они считают xpath-ом только два слеша?

Boris Osipov
@BorisOsipov
нет конечно
const XPATH_SELECTORS_START = [ '/', '(', '../', './', '*/' ]