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

Автоматизатор мобильных приложений
онлайн, начало 11 августа
Тестирование безопасности
онлайн, начало 11 августа
Тестирование мобильных приложений
онлайн, начало 11 августа
Автоматизация тестирования REST API на Python
онлайн, начало 11 августа
Фотография

Selenium - проверка удаления элемента

Selenium WebDriver

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

#1 aid

aid

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

  • Members
  • PipPipPipPip
  • 448 сообщений
  • ФИО:Николай


Отправлено 09 апреля 2015 - 07:47

Добрый день. Использую для создания теста Selenium Webdriver + Java. При улучшении созданного теста столкнулся с проблемой проверки удаления блоков на вебформе. Как можно реализовать данный функционал?


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 823 сообщений


Отправлено 09 апреля 2015 - 08:12

/**
* Проверяет что элемент не найден
*
* @param path css
*/
public void checkThatElementNotPresent(String path){
try {
if (driver.findElement(By.cssSelector(path)).isDisplayed()) {
throw new UnsupportedOperationException("Элемент [" + path + "] найден");
}
} catch (NoSuchElementException e) {
logger.info("Элемент не найден");
}
}

  • 1

#3 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 09 апреля 2015 - 08:23

а так не сработает разве ?

if !(driver.findElement(By.cssSelector(path)).isDisplayed()) {

 logger.info("Элемент не найден");

}

  • 0

#4 aksas

aksas

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

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 09 апреля 2015 - 08:44

нет, если элемента нет в DOM то поиск вернет исключение


  • 0

#5 aksas

aksas

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

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 09 апреля 2015 - 08:53

посмотрите как в коде вебдрайвера сделано https://code.google....Conditions.java

 

те для вас както так должно быть

public void isInvisible(By locator){
        try {
          return !(driver.findElement(locator).isDisplayed());
        } catch (NoSuchElementException e) {
          // Returns true because the element is not present in DOM. The
          // try block checks if the element is present but is invisible.
          return true;
        } catch (StaleElementReferenceException e) {
          // Returns true because stale element reference implies that element
          // is no longer visible.
          return true;
        }
}

  • 2

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 09 апреля 2015 - 08:54

да , сорри , мы писали отдельную функцию

checkIfElementExists

которая возвращает либо true либо false


  • 0

#7 aid

aid

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

  • Members
  • PipPipPipPip
  • 448 сообщений
  • ФИО:Николай


Отправлено 09 апреля 2015 - 10:01

Благодарю за пример, я его под свои нужды изменю.


  • 0

#8 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 10 апреля 2015 - 12:05

а почему бы не проверять через driver.findElements(...).size()? Если размер равен нулю - нет элемента. Если не равен, то проверяем отображается ли.


  • 0

#9 aid

aid

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

  • Members
  • PipPipPipPip
  • 448 сообщений
  • ФИО:Николай


Отправлено 10 апреля 2015 - 19:04

а почему бы не проверять через driver.findElements(...).size()? Если размер равен нулю - нет элемента. Если не равен, то проверяем отображается ли.

 

Не очень понятно "Если не равен, то проверяем отображается ли", выходит 2 условия так? А зачем? Там очень обширный проект, элементов более чем, код дико разросшийся, я пытаюсь его оптимизировать.


  • 0

#10 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 11 апреля 2015 - 04:02

а почему бы не проверять через driver.findElements(...).size()? Если размер равен нулю - нет элемента. Если не равен, то проверяем отображается ли.

Проверка элемента через size чревата долгим ожиданием в случае если этот самый размер коллекции равен нулю. На сколько я понимаю в селениум есть таймаут на действие, так вот - если size > 0, то действие пройдет гораздо быстрее, иначе попытки поиска будут продолжаться в течении всего таймаута.


  • 0

:smile:


#11 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 863 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 13 апреля 2015 - 08:31



очень обширный проект, элементов более чем, код дико разросшийся, я пытаюсь его оптимизировать.

 

Можно ещё так оптимизировать пример aksas

Начиная с Java 1.7

	public boolean isInvisible(By locator) {
		try {
			return !(driver.findElement(locator).isDisplayed());

		} catch (NoSuchElementException | StaleElementReferenceException e) {

			return true;
		}

	}

  • 0

#12 aid

aid

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

  • Members
  • PipPipPipPip
  • 448 сообщений
  • ФИО:Николай


Отправлено 14 апреля 2015 - 11:12

 



очень обширный проект, элементов более чем, код дико разросшийся, я пытаюсь его оптимизировать.

 

Можно ещё так оптимизировать пример aksas

Начиная с Java 1.7

	public boolean isInvisible(By locator) {
		try {
			return !(driver.findElement(locator).isDisplayed());

		} catch (NoSuchElementException | StaleElementReferenceException e) {

			return true;
		}

	}

 

Ранее такой пример приводили, но всё равно спасибо.


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами Selenium WebDriver

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

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

Яндекс.Метрика
Реклама на портале