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

Фотография

Selenium не видит атрибут?


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

#1 Dmitry1199

Dmitry1199

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Дмитрий Петрунин

Отправлено 07 февраля 2023 - 10:54

Добрый день!

Столкнулся с проблемой. Пишу примитивный автотест и не могу пройти проверку.

Суть такова. Зарегистрировались на сайте, зашли в профиль и нужно сравнить Email в профиле с тем, что был при регистрации условно.

Код прилагаю:

from selenium import webdriver
import time
def test_loggin():
    driver = webdriver.Chrome()
    driver.get("https://shop.synctoskill.com/")
    driver.maximize_window()
    driver.find_elements("xpath", '//a[@class="nav-link text-dark"]')[0].click()
    driver.find_element("name", 'Email').send_keys('autotest@ya.ru')
    driver.find_element("name", 'Password').send_keys('12345Qwer')
    driver.find_element("xpath", '//input[@value="Sign In"]').click()
    driver.find_element("xpath", '//a[@href="/Account/Profile"]').click()
    email = driver.find_elements("xpath", '//p[2][@class="small"]').__getattribute__("class")
    assert email == "autotest@ya.ru"
    time.sleep(3)
    driver.close()

Выдает ошибку по Атрибуту.

Прикрепленные файлы


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 08 февраля 2023 - 07:01

А почему вы ищете несколько элементов, а не один? У списка элементов не может быть атрибута. 

email = driver.find_elements("xpath", '//p[2][@class="small"]').__getattribute__("class")

Поэтому нужно использовать driver.find_element


  • 1

#3 Dmitry1199

Dmitry1199

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Дмитрий Петрунин

Отправлено 08 февраля 2023 - 07:43

А почему вы ищете несколько элементов, а не один? У списка элементов не может быть атрибута. 

email = driver.find_elements("xpath", '//p[2][@class="small"]').__getattribute__("class")

Поэтому нужно использовать driver.find_element

Да, забыл поменять, просто до этого был немного другой xpath и находил по нему 2 элемента.

Но все же даже по одному элементу проблема так и осталась.


  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 08 февраля 2023 - 07:48

А какая сейчас ошибка?

Вообще у вас проверка изначально не верная по логике. Вы пишите локатор, а потом пытаетесь получить тоже самое значение. Даже если получится получить значение атрибута, у вас получится "small"=="autotest@ya.ru"


  • 1

#5 Dmitry1199

Dmitry1199

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Дмитрий Петрунин

Отправлено 08 февраля 2023 - 09:34

А какая сейчас ошибка?

Вообще у вас проверка изначально не верная по логике. Вы пишите локатор, а потом пытаетесь получить тоже самое значение. Даже если получится получить значение атрибута, у вас получится "small"=="autotest@ya.ru"

Все исправил, у вас было верное замечание. Убрал атрибут вообще и поправил assert

from selenium import webdriver
import time
def test_registr():
    driver = webdriver.Chrome()
    driver.get("https://shop.synctoskill.com/")
    driver.maximize_window()
    driver.find_elements("xpath", '//a[@class="nav-link text-dark"]')[0].click()
    driver.find_element("name", 'Email').send_keys('autotest@ya.ru')
    driver.find_element("name", 'Password').send_keys('12345Qwer')
    driver.find_element("xpath", '//input[@value="Sign In"]').click()
    driver.find_element("xpath", '//a[@href="/Account/Profile"]').click()
    email = driver.find_element("xpath", '//p[2][@class="small"]')
    assert email.text == "Email: autotest@ya.ru"
    time.sleep(3)
    driver.close()

  • 0


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

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