Исключение NoSuchElementException в Selenium

#python #web-scraping #data-mining

#python #очистка веб-страниц #интеллектуальный анализ данных

Вопрос:

Привет, эксперты!Я новичок в программировании, я столкнулся с проблемой поиска определенного элемента. Вот мой код.

 from selenium import webdriver
from bs4 import BeautifulSoup as bs
import time

driver = webdriver.Chrome()
driver.get('https://www.ackerwines.com/auctions/?auctionId=1328')
time.sleep(3)
driver.find_element_by_xpath("//label[@for='checkbox']").click()
time.sleep(2)
driver.find_element_by_xpath("(//div[@id='sm-agree-button-wrap'])[3]").click()
time.sleep(5)
try:
    driver.find_element_by_xpath("(//div[@class='elementor-shortcode'])[6]").click()
except:
    driver.find_element_by_xpath("(//a[@class='elementor-icon'])[1]").click()
time.sleep(1)
driver.find_element_by_xpath("//input[@id='xoo-el-username']").click()
driver.find_element_by_xpath("//input[@id='xoo-el-username']").send_keys('malikibrahim6786@gmail.com')
driver.find_element_by_xpath("//input[@id='xoo-el-password']").click()
driver.find_element_by_xpath("//input[@id='xoo-el-password']").send_keys('Malik786')
driver.find_element_by_xpath("//input[@id='xoo-el-rememberme']").click()
driver.find_element_by_xpath("(//button[@type='submit'])[2]").click()
time.sleep(15)

prod = driver.find_element_by_xpath("//div[@class='auctionLotsList']")
print(prod)
 

Ошибка, которую я получаю, это

 NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='auctionLotsList']"}
  (Session info: chrome=87.0.4280.88)
 

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

1. Очевидным объяснением является то, что элемента там нет. Что заставляет вас думать, что оно должно быть там?

Ответ №1:

Исключение NoSuchElementException возникает, когда selenium не может найти элемент. Чтобы решить эту проблему, дважды проверьте правильность элемента xpath. Еще одна проблема, вызывающая это, заключается в том, что веб-сайт все еще загружается. Вы можете добавить задержку в 1 или 2 секунды с помощью time.sleep() . Наконец, вы можете перехватить исключение с помощью try: и except:, поместив под ним весь find_by_xpath .