Не получается, подскажите, что прописать или за что зацепиться в поле “Пароль”.
Лог прошел по классу, а вот пароль и по классу и по всем другим критериям не получается.
Как пробовали искать? Какой тип локатора использовали? Напишите ваш вариант поиска?
Как обычно F12. На скрине видно же. А как еще можно?
Наверное, я не совсем понял вопрос. Уточню. Вы какой тип локатора используете: xpath, css и т.д.? По идее ваш вариант поиска должен выглядеть что-то, вроде: //input[@name = “passwd”]… Или как у вас это выглядит и почему вы не можете указать свой элемент?
Вот песня и он не поется на пароле (валится).
from selenium import webdriver
from selenium.webdriver.common.by import By
mail = webdriver.Chrome(‘C:\Chromedriver_win32\chromedriver’)
mail.get(‘https://yandex.ru’)
account = mail.find_element(By.LINK_TEXT, “Войти в почту”)
account.click()
user = mail.find_element(By.CLASS_NAME, “passport-Input-Controller”)
user.send_keys(“name@yandex.ru”)
passwd = mail.find_element(By.CLASS_NAME, “passport-Input-Label”)
passwd.send_keys(“****”)
button = mail.find_element(By.CLASS_NAME, “passport-Button-Text”)
button.click()
А почему именно по классу ищите?
button = mail.find_element(By.XPATH, ‘//input[@name=“passwd” and @type=“password”’])
А с какой ошибкой падает?
я на коленке накидал по быстрому с использованием selene:
from selene.api import *
from selenium import webdriver
browser.set_driver(webdriver=webdriver.Chrome())
login_element = s('[name="login"]')
password_element = s('[name="passwd"]')
submit_element = s('[type="submit"]')
error_element = s('.passport-Domik-Form-Error')
email_entrance = s('[data-statlog="notifications.mail.logout.domik.login.big"]')
def login_with(login, password):
browser.open_url('https://yandex.ru')
email_entrance.click()
login_element.set(login)
password_element.set(password)
submit_element.click()
error_element.should(have.text('Такого аккаунта нет'))
browser.close()
if __name__ == '__main__':
login_with('opop@ololo.com', 'mysecretpassword')
всё работает…
у меня ощущение, что проблема скорее всего в ожиданиях…
попробуйте запустить, selene сам ждёт и на падения скриншоты делает - в стектрейсе будет ссылка.
- оба поля “логин” и “пароль” имеют один и тот же класс “passport-Input-Controller”. А локатор элемента должен быть уникальным, поэтому вам не стоит находить элемент по его классу в данном случае.
- локатор поля “логин” неверный, т.к. даже из названия класса видно что это лейбл. В лейбл не введешь текст. Вам нужен элемент input на самом деле
Спасибо большое, буду пробывать, что получится отпишусь.