function for switching frames in python, selenium

frame, python, selenium, webdriver

Solution

The way this is written, it's trying to parse CSS code as Python code. You don't want that.

This function is suitable:

def frame_switch(css_selector):
  driver.switch_to.frame(driver.find_element_by_css_selector(css_selector))

If you are just trying to switch to the frame based on the `name` attribute, then you can use this:

def frame_switch(name):
  driver.switch_to.frame(driver.find_element_by_name(name))

To switch back to the main window, you can use

driver.switch_to.default_content()

Problem

I'm looking for a function that makes it easier to switch between two frames. Right now, every time I need to switch between frames, I'm doing this by the following code: ``` 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']")) ``` My goal is to get a function that takes an argument just to change nav or content since the rest is basically the same. What I've already tried is: ``` 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)) ``` But it gives me an error ``` x = str(frame[name=str(content_or_nav)] ^ ``` SyntaxError: invalid syntax

Original source