Size: a a a

Selenide на русском

2020 November 17

SR

Stas Rusakov in Selenide на русском
Но это довольно странный кейс так нажимать)
Хотя таким вопросом по моему тут уже интересовались)
источник

SR

Stas Rusakov in Selenide на русском
Можно еще через xpath изначально собрать без 1-ого элемента
Вроде вот так
"//<ваш тег>[position() > 1]"
источник

DL

Denys Lystopadskyy in Selenide на русском
Andrei Solntsev
Отдел расследований выяснил, почему прокси не работает в селеноиде:
https://ru.selenide.org/2020/11/17/why-proxy-does-not-work-in-selenoid/
Добрій день!
А примере тесті і Selenoid у нас на разніх компах?
источник

OL

Oleksandr Lozitskyi in Selenide на русском
Stas Rusakov
Поправьте если не прав, но мне кажется что то типа такого

$$("").listIterator(1).forEachRemaining(SelenideElement::click);
спасибо
источник

OL

Oleksandr Lozitskyi in Selenide на русском
Stas Rusakov
Поправьте если не прав, но мне кажется что то типа такого

$$("").listIterator(1).forEachRemaining(SelenideElement::click);
вот первый раз кликает на элемент, а на второй раз нет, пишет Element not found {$$(98 elements)[2]}      

for (ListIterator<SelenideElement> it = listArea.listIterator(1); it.hasNext(); ) {
           SelenideElement elm = it.next();
           elm.click();
           if(tableRow.has(visible)) {
               break;
           }
           chooseArea(area).click();
       }
источник

SR

Stas Rusakov in Selenide на русском
Сразу замечу что вот это плохие строки:
if(tableRow.has(visible)) {
               break;
           }

Они
ничего не ожидают и можно легко словить неправильное поведение
источник

OL

Oleksandr Lozitskyi in Selenide на русском
пока эти строки самые правильные)
источник

OL

Oleksandr Lozitskyi in Selenide на русском
мне надо прермвать цикл когда будет виде нелемент
источник

SR

Stas Rusakov in Selenide на русском
По ошибке трудно сказать

Я бы будь на вашем месте - переписал бы логику теста)

Если бы меня заставляли под дулом пистолета - попробовал бы подебажить)
Посмотрел бы что там на второй итерации творится)
Или бы даже просто написал что бы увидеть
listArea.get(1).click():
listArea.get(2).click():
источник

OL

Oleksandr Lozitskyi in Selenide на русском
Stas Rusakov
По ошибке трудно сказать

Я бы будь на вашем месте - переписал бы логику теста)

Если бы меня заставляли под дулом пистолета - попробовал бы подебажить)
Посмотрел бы что там на второй итерации творится)
Или бы даже просто написал что бы увидеть
listArea.get(1).click():
listArea.get(2).click():
спасибо,
listArea.get(4).click(); таким способом нажимает на любой элемент который я укажу
источник

OL

Oleksandr Lozitskyi in Selenide на русском
Stas Rusakov
По ошибке трудно сказать

Я бы будь на вашем месте - переписал бы логику теста)

Если бы меня заставляли под дулом пистолета - попробовал бы подебажить)
Посмотрел бы что там на второй итерации творится)
Или бы даже просто написал что бы увидеть
listArea.get(1).click():
listArea.get(2).click():
for (int i = 1; i < listArea.size(); i++) {
           listArea.get(i).click();
           waitLoaders();
           if(tableRow.has(visible)) {
               break;
           }
           chooseArea(area).click();
       }

этот способ работает, спасибо)
источник

SR

Stas Rusakov in Selenide на русском
Надеюсь у вас там не sleep)
waitLoaders();

А
вообще просто к сведению - правильным этот тест сделало бы знание нажатие на какую строку сделает видимым ваш tableRow

Тогда бы без всяких циклов и if-ов вы бы написали быстрый и надежный тест)
А сейчас вы рискуете во первых тем что коллекция будет долго пребираться
во вторых - что tableRow будет видимым, но спустя пару миллесекунд после вашей проверки)
источник

AN

Alex Nemoy in Selenide на русском
привет - тестирую прилу которая выдает токен авторизации  через соцсети. делать так для каждого теста - ресурсоемко -  использовать одно окно для всех тестов - теряется состояние - подскажите могу ли я забрать нужные хеадеры и в последующих тестах их подсунуть для обхода авторизации ?
источник

BO

Boris Osipov in Selenide на русском
Alex Nemoy
привет - тестирую прилу которая выдает токен авторизации  через соцсети. делать так для каждого теста - ресурсоемко -  использовать одно окно для всех тестов - теряется состояние - подскажите могу ли я забрать нужные хеадеры и в последующих тестах их подсунуть для обхода авторизации ?
Да, разрешаю, делайте
источник

AN

Alex Nemoy in Selenide на русском
Boris Osipov
Да, разрешаю, делайте
что гуглить -  на сайте selenide в разделе help - поиск по header ничего не дал
источник

SR

Stas Rusakov in Selenide на русском
Alex Nemoy
что гуглить -  на сайте selenide в разделе help - поиск по header ничего не дал
Это на другую тему
Но механизм я думаю тот же)
https://ru.selenide.org/2019/12/07/advent-calendar-csrf-protection/
источник

AN

Alex Nemoy in Selenide на русском
это как раз читаю - но неужели нет более простого способа ?
источник

SR

Stas Rusakov in Selenide на русском
Есть)
Попрсите разработку добавить во фронт (или что логичнее - бэк) тестовый режим)
Там изменение сделать проще)
источник

AN

Alex Nemoy in Selenide на русском
Stas Rusakov
Есть)
Попрсите разработку добавить во фронт (или что логичнее - бэк) тестовый режим)
Там изменение сделать проще)
а через хром дев тоолс разве назначить хеадеры нельзя ?
источник

OL

Oleksandr Lozitskyi in Selenide на русском
Stas Rusakov
Надеюсь у вас там не sleep)
waitLoaders();

А
вообще просто к сведению - правильным этот тест сделало бы знание нажатие на какую строку сделает видимым ваш tableRow

Тогда бы без всяких циклов и if-ов вы бы написали быстрый и надежный тест)
А сейчас вы рискуете во первых тем что коллекция будет долго пребираться
во вторых - что tableRow будет видимым, но спустя пару миллесекунд после вашей проверки)
waitLoaders() - там loaders.forEach(loader -> loader.waitUntil(disappear, 15000));
источник