Попробуйте следующий код, чтобы дождаться iframe
и переключиться на него, чтобы иметь возможность обрабатывать внутренние узлы:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(URL)
wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("iframe_name_or_id"))
Вместо "iframe_name_or_id"
вы можете передать iframe
как WebElement:
wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_xpath('//iframe')))
Для ожидания присутствия элемента внутри фрейма:
wait(driver, 10).until(EC.presence_of_element_located((By.ID, "Element ID")))
Вы также можете использовать By.NAME
, By.CLASS_NAME
, By.XPATH
и т. Д. *
Подробнее о ExplicitWait