Size: a a a

Selenide на русском

2019 December 04

ИК

Илья Красильников in Selenide на русском
Anton
shouldHave(cssClass же есть
Спасибо! 🙂
источник

M

Max in Selenide на русском
Всем привет, подскажите пожалуйста как правильно сделать такую проверку на Selenide

Получаю колеекцую элементов:
$$(byXpath("//*[contains(@class,'product-list__item ')]")).filterBy(visible); для примера size равен 5

Теперь нужно внутри каждого элемента проверить наличие других элементов, как красиво и правильно это нужно делать с помощью Selenide ?
источник

V

Vitaly in Selenide на русском
$$(byXpath("//*[contains(@class,'product-list__item ')]")).filterBy(visible).forEach(el -> el.find(“bla”))
источник

M

Max in Selenide на русском
Получется если даже элемент bla не найден тест всеравно проходит, если я правильно понял то ещё необходимо в конце добавлять проверки на sholdBe(visible) ?

$$(byXpath("//*[contains(@class,'product-list__item ')]")).filterBy(visible).forEach(e -> e.find(("bla")).shouldBe(visible));

И вот если мне нужно проверять внутри элемента "bla" и ещё несколько элементов, к примеру там "opa", "stick"
источник

AV

Alexei Vinogradov in Selenide на русском
Max
Получется если даже элемент bla не найден тест всеравно проходит, если я правильно понял то ещё необходимо в конце добавлять проверки на sholdBe(visible) ?

$$(byXpath("//*[contains(@class,'product-list__item ')]")).filterBy(visible).forEach(e -> e.find(("bla")).shouldBe(visible));

И вот если мне нужно проверять внутри элемента "bla" и ещё несколько элементов, к примеру там "opa", "stick"
Элементы одинаковые или разные?
источник

M

Max in Selenide на русском
да одинаковые
источник

AV

Alexei Vinogradov in Selenide на русском
Тогда так как вы писали должно сработать, да
источник

M

Max in Selenide на русском
спасибо, вот ещё пытаюсь понять, как проверять внутри элемента не один элемент а несколько, в примере выше я получается проверяют только один "bla"
источник

AV

Alexei Vinogradov in Selenide на русском
е -> { е.$("a").should(); е.$("b").should(); }
источник

M

Max in Selenide на русском
всем спасибо большое за помощь
источник

M

Max in Selenide на русском
а так что бы передавать уже ранее созданный элемент, ни как нельзя ?)

SelenideElement aEl = $("anyLocator");
SelenideElement bEl = $("anyLocator2")

e-> {e.aEl.should(); e.bEl.should();}
источник

M

Max in Selenide на русском
чтобы вместо e.$("a") заменить на:

SelenideElement a = $("anyLocator");

e.a
источник

A

Anton in Selenide на русском
Это не локаторы, это SelenideElement =) Локатор это By внтури $. их можно сохранить и будет $(a).$(b)
источник

AV

Alexei Vinogradov in Selenide на русском
Max
а так что бы передавать уже ранее созданный элемент, ни как нельзя ?)

SelenideElement aEl = $("anyLocator");
SelenideElement bEl = $("anyLocator2")

e-> {e.aEl.should(); e.bEl.should();}
Так в Java нельзя
источник

M

Max in Selenide на русском
так примерно понял ) спасибо )
источник

M

Max in Selenide на русском
public static void checksPresenceElementsInMiniCardInBlocksOfTopProducts() {
       $(byXpath("//*[@class='title_list'] | //*[@class='top-small-products__title']")).scrollTo();

       By sticker = (byCssSelector(".product-list__item__promotion"));
       By oldPrice = (byCssSelector(".product-list__item__old-price"));
       By image = (byCssSelector(".ovVisLi_image"));
       By productName = (byCssSelector(".product-list__item__title"));
       By articleNumber = (byCssSelector(".product-list__item__nummer"));
       By price = (byCssSelector(".product-list__item__price"));
       By infoVatAndDelivery = (byCssSelector(".product-list__item__info"));

       for (SelenideElement element : $$(byXpath("//*[contains(@class,'product-list__item ')]")).filterBy(visible)) {
           element.$(sticker).should(visible);
           element.$(oldPrice).should(visible);
           element.$(image).should(visible);
           element.$(productName).should(visible);
           element.$(articleNumber).should(visible);
           element.$(price).should(visible);
           element.$(infoVatAndDelivery).should(visible);
       }
источник

M

Max in Selenide на русском
в итоге сделал вот так
источник

SV

Stanislav Vasenkov in Selenide на русском
Напомните, а было что-то типа window(1).should(disappear), нужно дождаться когда окошко авторизации FB пропадет
источник

AV

Alexei Vinogradov in Selenide на русском
Stanislav Vasenkov
Напомните, а было что-то типа window(1).should(disappear), нужно дождаться когда окошко авторизации FB пропадет
о, это прикольный кейс, с налёта не знаю.

побочный вопрос, @barancev что делает селениум если несколько окон и то, в котором был фокус - закрылось. Следующая команда в том окне куда попал (случайно?) фокус после закрытия или ошибки?
источник

AV

Alexei Vinogradov in Selenide на русском
то есть знаю, что никаких специальных команд нет
источник