com.codeborne.selenide.Selenide [src]

Ядро библиотеки Selenide. Основные методы - это open, $ и $$:

  • $(String cssSelector) – возвращает объект типа SelenideElement, который представляет первый найденный по CSS селектору элемент на странице
  • $(By) – возвращает "первый SelenideElement" по локатору типа By
  • $$(String cssSelector) – возвращает объект типа ElementsCollection, который представляет коллекцию всех элементов найденных по CSS селектру
  • $$(By) – возвращает "коллекцию элементов" по локатору типа By

Обычно, когда ты получаешь с помощью доллара объект SelenideElement, ты можешь либо совершить с ним какое-то действие:

  • $(byText("Sign in")).click();

и даже несколько действий сразу:

  • $(byName("password")).setValue("qwerty").pressEnter();

либо проверить какое-то условие:

  • $(".welcome-message").shouldHave(text("Welcome, user!")).

"Два доллара" же может быть удобно использовать когда нужный элемент является одним из группы однотипных элементов. Например вместо:

$(byXpath("//*[@id='search-results']//a[contains(text(),'selenide.org')]")).click();

можно использовать более читабельный и лаконичный вариант:

$$("#search-results a").findBy(text("selenide.org")).click();

Такой "составной локатор" удобный еще и тем, что в случае ошибки нахождения элемента позволяет по сообщению об ошибке - сразу определить какая из "частей" не сработала. В первом же случае мы сможем лишь получить информацию о том, что "целый локатор" не сработал, и потратим больше времени на поиск той "части" которая привела к ошибке.

Также, если нужно работать с разными элементами одной и той же коллекции, у нас теперь есть возможность вынести коллекцию элементов в переменную:

ElementsCollection resultLinks = $$("#search-results a");
//...
resultLinks.first().shouldHave(text("selenide.org"));
resultLinks.get(1).shouldHave(text("ru.selenide.org"));
resultLinks.shouldHave(size(10));
//...
resultLinks.findBy(text("github.com/codeborne/selenide")).click()

Таким образом мы не повторяем локатор "#search-results a" в разных местах, и следовательно, если он поменяется - нам нужно будет внести изменения только в одном месте.

Также теперь удобно в IDE использовать autocomplete при наборе имени уже созданной переменной resultLinks.

Не стесняйся поискать и найти намного больше методов внутри класса Selenide, которые могут тебе понадобиться;), просто набрав в любимом IDE Selenide.,

Вот лишь несколько примеров:

  • sleep()
  • refresh()
  • title()
  • executeJavaScript(String jsCode, Object... arguments)

results matching ""

    No results matching ""