example site: https://demo.automationtesting.in/Frames.html
import time
from selenium import webdriver
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://demo.automationtesting.in/Frames.html")
# switch to frame 1
frame1 = driver.find_element(By.ID, 'singleframe')
driver.switch_to.frame(frame1)
driver.find_element(By.XPATH, '//input[@type="text"]').send_keys("Entered into the frame")
# we need to come out of the frame to interact with elements outside the frame.
driver.switch_to.default_content()
time.sleep(3)
# handle nested frames
driver.find_element(By.XPATH, '//a[text()="Iframe with in an Iframe"]').click()
outerframe = driver.find_element(By.XPATH, '//iframe[@src="MultipleFrames.html"]')
driver.switch_to.frame(outerframe)
innerframe = driver.find_element(By.XPATH, '//iframe[@src="SingleFrame.html"]')
driver.switch_to.frame(innerframe)
driver.find_element(By.XPATH, '//input[@type="text"]').send_keys("Entered into the nested frame successfully")
time.sleep(2)
driver.quit()