Элемент не найден по имени / идентификатору в селене - PullRequest
0 голосов
/ 18 июня 2019

Я использую Selenium для входа в учетную запись Mathwork, но у меня появляется это сообщение об ошибке «AttributeError: объект NoneType» не имеет атрибута «send_keys» »

Вот источник страницы входа в Mathwork:

name

и

enter image description here

Я пробовал разные строки кода ниже,но безрезультатно:

username = driver.find_element_by_xpath(".//*[@id='userId']")
username = driver.find_element_by_name('userId')
username = driver.find_element_by_id('userId')

Вот мой полный код:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('C:\\Users\Dung Le\\Downloads\\Compressed\\chromedriver.exe')

driver.get('https://www.mathworks.com/login?uri=https%3A%2F%2Fwww.mathworks.com%2Fhelp%2Findex.html%3Fs_tid%3DCRUX_lftnav')
driver.implicitly_wait(60)
username = driver.find_element_by_name('userId')
username.send_keys('my_email')

password = driver.find_element_by_name('password')
time.sleep(2)
password.send_keys('my_password')

Я получил эту ошибку:

"C: \ Program Files \Python37 \ python.exe "" C: / Users / Dung Le / PycharmProjects / untitled7 / dsd.py "Traceback (последний вызов был последним): файл" C: / Users / Dung Le / PycharmProjects / untitled7 / dsd.py ",строка 11 в username.send_keys ('leanh *** @ gmail.com') AttributeError: у объекта 'NoneType' нет атрибута 'send_keys'

Процесс завершен с кодом выхода 1

и этот вывод:

enter image description here

Я ожидаю, чтобы устранить эту ошибку, и мои данные для входа в систему находятся в области ввода страницы входа в систему.

ThСпасибо за помощь!

1 Ответ

2 голосов
/ 18 июня 2019

Вы всегда должны проверять, находится ли элемент в основном контенте или во фрейме, если элемент находится во фрейме, сначала нужно переключиться на этот фрейм:

frame = driver.find_element_by_id('me')
driver.switch_to.frame(frame)
driver.find_element_by_id('userId').send_keys('blablabla')

после того, как вы закончите с рамкой, вернитесь к содержимому по умолчанию

driver.switch_to.default_content()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...