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

Тестирование REST API
онлайн, начало 26 августа
Школа тест-менеджеров v. 2.0
онлайн, начало 21 августа
Школа для начинающих тестировщиков
онлайн, начало 22 августа
Программирование на C# для тестировщиков
онлайн, начало 23 августа
Фотография

Python selenium проверить наличие элемента на веб странице


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

#1 GameMavericks

GameMavericks

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

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Кутейкин Сергей Николаевич

Отправлено 21 Апрель 2019 - 15:20

Здравствуйте, мне необходимо проверить что определенный элемент присутствует на веб-странице.

Нахожу элемент следующим образом:

Element = driver.find_element_by_id('text')

Проверку сделал следующим образом:

self.assertTrue("id = text", Element)

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

После этого я нашел как проверить наличие элементов следующим методом:

from selenium.common.exceptions import NoSuchElementException
def check_exists_by_id(id):
try:
webdriver.find_element_by_id(id)
except NoSuchElementException:
return False
return True

Теперь я вообще запутался. Скажите пожалуйста, каким методом все таки нужно производить проверку наличия элемента на странице? И все таки, возможно ли это сделать через assert.True()?

 

 

 

 


  • 0

#2 H_B

H_B

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

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Кожевников Иван
  • Город:Курган


Отправлено 26 Апрель 2019 - 12:14

Здравствуйте, мне необходимо проверить что определенный элемент присутствует на веб-странице.

Нахожу элемент следующим образом:

Element = driver.find_element_by_id('text')

Проверку сделал следующим образом:

self.assertTrue("id = text", Element)

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

После этого я нашел как проверить наличие элементов следующим методом:

from selenium.common.exceptions import NoSuchElementException
def check_exists_by_id(id):
try:
webdriver.find_element_by_id(id)
except NoSuchElementException:
return False
return True

Теперь я вообще запутался. Скажите пожалуйста, каким методом все таки нужно производить проверку наличия элемента на странице? И все таки, возможно ли это сделать через assert.True()?

Например, найти все через

my_elems = webdriver.find_elements_by_xpath(".//*[@id='text']")

if len(my_elems) == 0:

    print("Элемента нет")

Или например, подождать:

try:

    wait.until(EC.presence_of_element_located((By.ID, 'text'))) или visibility_of_element_located или element_to_be_clickable и т.д.

except TimeoutException:

    print("Элемента нет")


  • 0

#3 panix

panix

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

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алекс Пан

Отправлено 09 Май 2019 - 13:45

Теперь я вообще запутался. Скажите пожалуйста, каким методом все таки нужно производить проверку наличия элемента на странице? И все таки, возможно ли это сделать через assert.True()?

Например, найти все через

my_elems = webdriver.find_elements_by_xpath(".//*[@id='text']")

if len(my_elems) == 0:

    print("Элемента нет")

Или например, подождать:

try:

    wait.until(EC.presence_of_element_located((By.ID, 'text'))) или visibility_of_element_located или element_to_be_clickable и т.д.

except TimeoutException:

    print("Элемента нет")

 

Или

my_element = webdriver.find_element_by_xpath(".//*[@id='text']")
если элемента нет - то в my_element  будет None

 

if my_element  is None:

    print("Элемента нет")

 


  • 0

#4 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 805 сообщений
  • ФИО:Dmitry Petrov

Отправлено 13 Май 2019 - 11:18

Здравствуйте, мне необходимо проверить что определенный элемент присутствует на веб-странице.

Нахожу элемент следующим образом:

Element = driver.find_element_by_id('text')

Проверку сделал следующим образом:

self.assertTrue("id = text", Element)

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

После этого я нашел как проверить наличие элементов следующим методом:

from selenium.common.exceptions import NoSuchElementException
def check_exists_by_id(id):
try:
webdriver.find_element_by_id(id)
except NoSuchElementException:
return False
return True

Теперь я вообще запутался. Скажите пожалуйста, каким методом все таки нужно производить проверку наличия элемента на странице? И все таки, возможно ли это сделать через assert.True()?

 

Вам правильно сказали, что ваше вырождение ничего не проверяет, потому как вы его неверно используете.

Element = webdriver.find_element_by_xpath(".//*[@id='text']")
self.assertFalse(Element=None, "No such element")

или так:

self.assertTrue(Element!=None, "No such element")

но я бы делал обёртку в виде метода с именованными параметрами входа.


  • 0

#5 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 805 сообщений
  • ФИО:Dmitry Petrov

Отправлено 13 Май 2019 - 13:13

ну и для конкретно проверки наличия или отсутствия элемента надо использовать assertIsNotNone, а не assertTrue

 

Ну и напоследок, ваш вопрос к силениуму имеет очень слабое отношение. 

вы спрашиваете про библиотеку unittest, что, как говориться, совсем другая история.


  • 0


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



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

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

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