#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.