Что я должен сделать, чтобы исправить ошибку NoSuchElementException в моем коде Python? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь войти в конкретную ссылку (указанную в коде) и войти в систему, используя идентификатор пользователя и пароль. После входа в систему я хочу нажать на кнопку «посмотреть все отзывы ххх». Я использую селен для этой задачи. К сожалению, я получаю сообщение об ошибке.

** Traceback (последний вызов был последним): Файл "C: /Users/xxxx/.PyCharmEdu2018.1/config/scratches/scratch_2.py", строка 16, в username_box = driver.find_element_by_id ('emailInput-input')

selenium.common.exceptions.NoSuchElementException: Сообщение: такого элемента нет: невозможно найти элемент: {"method": "id", "selector": "emailInput-input"} (Информация о сеансе: chrome = 67.0.3396.99) (Информация о драйвере: chromedriver = 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab), платформа = Windows NT 10.0.17134 x86_64) **

Это мой код:

from selenium import webdriver
from getpass import getpass
from selenium.webdriver.support.ui import WebDriverWait

`
usr = input('enter your user name : ')
psd = input('enter the password : ')

url = "https://www.coursera.org/courses?authMode=login&languages=en&query=big+data&userQuery=big+data"

# create a new Chrome session
driver = webdriver.Chrome()
driver.get(url)

username_box = driver.find_element_by_id('emailInput-input')
username_box.send_keys(usr)

pass_box = driver.find_element_by_id('passwordInput-input') #FHSU
pass_box.send_keys(psd)


login_btn = driver.find_element_by_xpath('//*[@id="authentication-box-content"]/div/div[2]/div/div[1]/form/div[1]/button/span')
login_btn.submit()

driver.find_element_by_xpath('//*[@id="ratings"]/div[2]/button').click()

1 Ответ

0 голосов
/ 30 июня 2018

Попробуйте использовать другой идентификатор элемента, например by_xpath или by_class_name. Это может быть как @raviraja сказал, и элемент, возможно, еще не загружен. Вы импортировали WebDriverWait, просто используйте что-то вроде WebDriverWait(driver, 10).until(EC.presence_of_element_located(By.ID, 'emailInput-input')).

Только убедитесь, что импортировали from selenium.webdriver.support import expected_conditions as EC и from selenium.webdriver.common.by import By.

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