Подтвердить что ты не робот

Функция для переключения кадров в 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: недопустимый синтаксис

4b9b3361

Ответ 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'))