Не удается заставить Селен найти элемент

#python-3.x #selenium #selenium-webdriver

Вопрос:

Я пытаюсь использовать Selenium для автоматического нажатия кнопки next_frame, но я не знаю, почему элемент не может быть сохранен в переменной next_frame.Как мне получить переменную next_frame для определения местоположения элемента?

 from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as conditions
from selenium.webdriver.common.by import By

driver = webdriver.Edge(EdgeChromiumDriverManager().install())

driver.implicitly_wait(15)


activity_name = WebDriverWait(driver, 10).until(conditions.visibility_of_element_located((By.ID, "activity-title")))
if activity_name.text == 'Instruction' or activity_name.text == 'Warm-Up' or activity_name.text == 'Summary':
    activity_status = driver.find_element_by_id('activity-status')

    while activity_status.text != "Complete":

        next_frame = driver.find_element_by_xpath('//*[@id="bottom-area"]/div[3]/ol/li[5]/a')

        next_frame.click()

        activity_status = driver.find_element_by_id('activity-status')

    driver.find_element_by_class_name('nav-icon').click()

else:
    pass
 

Вот сообщение, которое он мне показал

     selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="bottom-area"]/div[3]/ol/li[5]/a"}
 

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

1. Это весь соответствующий код? Я не вижу, где вы даже открываете URL-адрес

2. Наиболее вероятная причина, если xpath верен, заключается в том, что он находится в корне iframe или тени, если вы получаете nosuchelement.

3. Я ввел функцию driver.get() в функцию, но оставил ее, чтобы быть более краткой.

4. о, я понимаю. он находится в iframe.