Функция для переключения кадров в python, селен
Я ищу функцию, которая упрощает переход между двумя кадрами. Прямо сейчас, каждый раз, когда мне нужно переключаться между кадрами, я делаю это по следующему коду:
driver.switch_to.frame(driver.find_element_by_css_selector("frame[name='nav']"))
driver.switch_to.frame(driver.find_element_by_css_selector("frame[name='content']"))
Моя цель - получить функцию, которая принимает аргумент только для изменения nav или контента, поскольку остальное в основном то же самое.
Я уже пробовал:
def frame_switch(content_or_nav):
x = str(frame[name=str(content_or_nav)] #"frame[name='content_or_nav']"
driver.switch_to.frame(driver.find_element_by_css_selector(x))
Но это дает мне ошибку
x = str(frame[name=str(content_or_nav)]
^
СинтаксисError: недопустимый синтаксис
Ответы
Ответ 1
Как это написано, он пытается проанализировать код CSS как код Python. Вы этого не хотите.
Эта функция подходит:
def frame_switch(css_selector):
driver.switch_to.frame(driver.find_element_by_css_selector(css_selector))
Если вы просто пытаетесь переключиться на фрейм на основе атрибута name
, вы можете использовать это:
def frame_switch(name):
driver.switch_to.frame(driver.find_element_by_name(name))
Чтобы вернуться в главное окно, вы можете использовать
driver.switch_to.default_content()
Ответ 2
Ниже у меня сработала команда driver.switch_to.frame(driver.find_element_by_css_selector ('iframe.modal-iframe'))