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

Фотография

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
  • 7 сообщений
  • ФИО:Кожевников Иван
  • Город:Курган


Отправлено 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
  • 10 сообщений
  • ФИО:Алекс Пан

Отправлено 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
  • 809 сообщений
  • ФИО: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
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 13 мая 2019 - 13:13

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

 

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

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


  • 0


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

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