Пожалуйста, обратитесь к документации по адресу: https://selenium -python.readthedocs.io / locating-elements.html
Мне нравится добавлять ожидаемое условие (EC), предоставляемое в качестве аргументафункции WebDriverWait.Until, чтобы код приостанавливал работу и эффективно давал странице определенное время для загрузки элемента, который может отсутствовать при начальной загрузке.
Вот пример, который я использовал впрошлое:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException, TimeoutException
TIME_TIMEOUT = 10 # Ten-second timeout default
def eprint(*args, **kwargs):
""" Prints an error message to the user in the console (prints to sys.stderr), passes
all provided args and kwargs along to the function as usual. Be aware that the 'file' argument
to print can be overridden if supplied again in kwargs.
"""
print(*args, file=sys.stderr, **kwargs)
driver = webdriver.Chrome()
driver.get("https://web.site/page")
try:
wait = WebDriverWait(driver, TIME_TIMEOUT).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".Select-placeholder")))
except NoSuchElementException as ex:
eprint(ex.msg())
except TimeoutException as toex:
eprint(toex.msg)