Ошибка атрибута: объект типа «By» не имеет атрибута «name»

#python #selenium #selenium-webdriver #webdriver #webdriverwait

#python #селен #selenium-webdriver #webdriver #webdriverwait

Вопрос:

Я делаю программу selenium, которая может входить в мою электронную почту, но у меня проблемы с By , и это не может быть By.name("") или кажется.

Вот упомянутая часть кода: (работает в Windows 7):

 psswd = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.name, "password")))
psswd.send_keys("MyPassword")
 

Комментарии:

1. print(type(By))

2. @JacobIRR Почему? Где?

3. где угодно, что скажет нам, что на самом деле есть

Ответ №1:

Вы были почти там. Вам нужно внести простое изменение следующим образом:

  • Вам нужно заменить name на NAME

Фактически, ваша строка кода будет:

 psswd = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "password")))
psswd.send_keys("MyPassword")
 

Ответ №2:

Если вы столкнулись с этой ошибкой, тогда будут некоторые исключения, такие как:

  1. вы используете By.name возможно, вам следует использовать By.NAME
  2. вы можете получить список объектов!
  3. возможно, вы не импортированы By , чтобы импортировать его, напишите from selenium.webdriver.common.by import By

или я предлагаю вам использовать find_elements_by_xpath для более эффективного поиска вашего элемента вот пример кода:

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
browser.get('https://www.facebook.com')
msg = 'KA_ME_HA_ME_HAAA'
username = browser.find_elements_by_xpath('//*[@id="email"]')
username[0].send_keys(msg)
browser.close()