Перейти к содержимому

Фотография

Как проверить отсутствие элемента на странице?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 14

#1 yulia_st

yulia_st

    Новый участник

  • Members
  • Pip
  • 25 сообщений

Отправлено 16 мая 2014 - 09:28

В ходе теста нужно проверить что элемент отсутствует на странице.

Как я поняла нельзя использовать конструкцию вида:

if (driver.findElement(By.xpath("someXpath")).isDisplayed == false)

 

как можно решить сию проблему?


  • 0

#2 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 16 мая 2014 - 09:43

if (driver.findElements(By.xpath("someXpath")).size() == 0) { ... }
// или
if (driver.findElements(By.xpath("someXpath")).isEmpty()) { ... }
Кстати, в условном операторе IF булевские переменные не обязательно приравнивать к значению.
//Например, вместо условия
if (a == true) { ... }
// можно написать:
if (a) { ... }

// то же самое для false
if (a == false) { ... }
// равносильно этому:
if (!a) { ... }

  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#3 Raimbek

Raimbek

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Егембердиев Раймбек Бактыбайулы
  • Город:Казахстан, Астана


Отправлено 16 мая 2014 - 09:51

можно создать метод для этого

   public boolean isElementPresent(By by) {
        try {
            driver.findElement(by);
            return true;
        } catch (NoSuchElementException e) {
            return false;
        }
    }

  • 0

#4 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 16 мая 2014 - 10:12

if (driver.findElements(By.xpath("someXpath")).size == 0)


  • 0

#5 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 16 мая 2014 - 11:15

можно создать метод для этого

   public boolean isElementPresent(By by) {
        try {
            driver.findElement(by);
            return true;
        } catch (NoSuchElementException e) {
            return false;
        }
    }

Ага. И будет тест тупить-ждать пока не истечёт время IMPLICITLY_WAIT.
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 16 мая 2014 - 13:00

Справедливости ради должен заметить, что метод findElements тоже будет ждать, пока не истечёт время имплицитного ожидания.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 asolntsev

asolntsev

    Новый участник

  • Members
  • Pip
  • 64 сообщений
  • ФИО:Андрей Солнцев
  • Город:Таллинн

Отправлено 16 мая 2014 - 19:51

Используйте Selenide - библиотеку поверх Selenium, которая как раз идеально подходит для таких проверок.

С Selenide вам достаточно написать:

$(By.xpath("someXpath")).shouldNotBe(visible);

  • 0

#8 yulia_st

yulia_st

    Новый участник

  • Members
  • Pip
  • 25 сообщений

Отправлено 19 мая 2014 - 06:33

решила проблему таким способом:

 

public boolean elementIsNotPresent(String xpath){
       return driver.findElements(By.xpath(xpath)).isEmpty();

}

 

спасибо за ответы :)


  • 0

#9 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 19 мая 2014 - 07:09

Даже Selenide не избавит вас от имплицитных ожиданий, если они включены :)


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#10 atom2k

atom2k

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Федорчук Артем


Отправлено 29 мая 2014 - 07:04

Добрый день.

Так как в итоге сделать чтоб скрипт не ждал, а делал эту проверку несколько секунд. 

Вопрос стоит остро, т.к. хочется проверять отсутствие большинства элементов на странице. 


  • 0

#11 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 29 мая 2014 - 07:51

Добрый день.

Так как в итоге сделать чтоб скрипт не ждал, а делал эту проверку несколько секунд. 

Вопрос стоит остро, т.к. хочется проверять отсутствие большинства элементов на странице. 

boolean notExist;
        try{
            driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
            notExist = driver.findElements(by).size()<1;
        }finally{
            driver.manage().timeouts().implicitlyWait(MY_OLD_TIMEOUT, TimeUnit.SECONDS);
        }

 

return notExists;


  • 2

#12 yomin

yomin

    Новый участник

  • Members
  • Pip
  • 13 сообщений
  • ФИО:Yury

Отправлено 26 июня 2014 - 04:45

Ребята, у меня похожая задача. Как можно организовать проверку присутствия элемента на странице в Selenium IDE? Нужно при его отсутствии вызывать Alert с определённым сообщением.


  • 0

#13 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 июня 2014 - 09:41

Не постите несвязанные вопросы в старые темы, создавайте новые!


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#14 Nwd

Nwd

    Новый участник

  • Members
  • Pip
  • 28 сообщений

Отправлено 10 июля 2014 - 14:01

В ходе теста нужно проверить что элемент отсутствует на странице.

Как я поняла нельзя использовать конструкцию вида:

if (driver.findElement(By.xpath("someXpath")).isDisplayed == false)

 

как можно решить сию проблему?

Т.е. он может быть на странице, но быть невидимым? Или вообще отсутствует?


  • 0

#15 cayra

cayra

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Богер В.А.

Отправлено 05 марта 2020 - 06:22

Ребят, в этом видео описаны 4 СПОСОБА как проверить, что веб элемент на странице отсутствует, причём некоторые из этих способов НЕ ИСПОЛЬЗУЮТ ТАЙМЕР, и за счёт этого проверка не будет проходить секунд 20-30 Вот видео, всем советую посмотреть : https://www.youtube....h?v=EoRHq5mhxxQ


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных