Size: a a a

Selenide на русском

2020 May 02

А

Александр in Selenide на русском
тогда перефразирую вопрос: как с помощью селенида узнать существует ли элемент, без выбрасывания Error'a?
$$(tableCell).size() > 0?
источник

СР

Саша Росолько... in Selenide на русском
элемент может быть найден, но не существовать на странице, в рамках видимости
например, быть скрытым
источник

СР

Саша Росолько... in Selenide на русском
Александр
тогда перефразирую вопрос: как с помощью селенида узнать существует ли элемент, без выбрасывания Error'a?
$$(tableCell).size() > 0?
это будет равносильно тому решению, что предложил Андрей
но я все еще согласен с ним, в том, что проверка какая-то невалидная  чтоли
источник

СР

Саша Росолько... in Selenide на русском
в любом случае затригерится поиск, и он подождет весь таймаут
источник

А

Александр in Selenide на русском
а.. кажется, мне нужен не exists() а, скажем, visible()
источник

СР

Саша Росолько... in Selenide на русском
если элемент не будет найден - он все так же прокинет эксепшн
источник

А

Александр in Selenide на русском
странно как-то получается.
элемент есть и он виден, и все равно error
источник

СР

Саша Росолько... in Selenide на русском
а локатор правильный?
он в браузере через поиск находит его, если руками искать?
источник

А

Александр in Selenide на русском
когда в таблице есть нужные ряд и ячейка - несомненно
источник

А

Александр in Selenide на русском
я думаю дело в промежуточных состояниях
раз в N времени случается ситуация когда обращение к элементу дает exists && visible == true, но когда происходит вызов .getText() элемента по факту уже нет - DOM изменился, и с этим изменением элемент пропал.
источник

А

Александр in Selenide на русском
хотя, тогда, по идее, должен выброситься StaleElementReference.
источник

AS

Andrei Solntsev in Selenide на русском
Александр
интересно другое: почему при таком условии
return $(tableCell).exists() ? $(tableCell).getText() : "";
Error вообще имел место..
В этой строке обычно не может выскакивать ошибки. $ exists() вернёт false, и метод вернёт пустую строку. Ошибка будет только в случае, если элемента не было, и вдруг он появился (как @rosolko написал выше).
источник

А

Александр in Selenide на русском
А если элемент был, а потом пропал?
источник

А

Александр in Selenide на русском
т.е. первое условие exists() вернуло true
источник

AS

Andrei Solntsev in Selenide на русском
То есть да, именно в этом случае.
источник

А

Александр in Selenide на русском
а StaleElementReference?
источник

А

Александр in Selenide на русском
если бы дом изменился, но элемент был все еще найден?
источник

AS

Andrei Solntsev in Selenide на русском
Да, тоже может быть
источник

А

Александр in Selenide на русском
ага.. кажется все встает на свои места.
спасибо :)
источник

AS

Andrei Solntsev in Selenide на русском
Ну так поэтому и не надо ифы в тестах писать.
источник