Frames

Two frames below — switch into a frame to interact with its content.

How to test
// Java - switch by name
WebElement f = driver.findElement(By.name("frameA"));
driver.switchTo().frame(f);
driver.findElement(By.id("a_btn")).click();
driver.switchTo().defaultContent();

// Java - switch by index
driver.switchTo().frame(1);
driver.findElement(By.id("b_input")).sendKeys("Frame B Test");
driver.findElement(By.id("b_btn")).click();
driver.switchTo().defaultContent();

// Python - similar
frame = driver.find_element(By.NAME, 'frameA')
driver.switch_to.frame(frame)
driver.find_element(By.ID, 'a_btn').click()
driver.switch_to.default_content()

// Java - Full Test
WebElement frameA = driver.findElement(By.name("frameA"));
driver.switchTo().frame(frameA);
driver.findElement(By.id("a_btn")).click();
Alert alert = driver.switchTo().alert();
assert alert.getText().equals("Frame A clicked");
alert.accept();
driver.switchTo().defaultContent();
WebElement frameB = driver.findElement(By.id("frameB"));
assert frameB.isDisplayed();
driver.switchTo().frame(frameB);
WebElement inputB = driver.findElement(By.id("b_input"));
inputB.sendKeys("Frame B Test");
driver.findElement(By.id("b_btn")).click();
WebElement resultB = driver.findElement(By.id("b_result"));
assert resultB.getText().contains("Frame B Test");
driver.switchTo().defaultContent();

# Python - Full Test
frame = driver.find_element(By.NAME, 'frameA')
driver.switch_to.frame(frame)
driver.find_element(By.ID, 'a_btn').click()
alert = driver.switch_to.alert
assert alert.text == "Frame A clicked"
alert.accept()
driver.switch_to.default_content()
frame_b = driver.find_element(By.ID, "frameB")
assert frame_b.is_displayed()
driver.switch_to.frame(frame_b)
input_b = driver.find_element(By.ID, "b_input")
input_b.send_keys("Frame B Test")
driver.find_element(By.ID, "b_btn").click()
result_b = driver.find_element(By.ID, "b_result")
assert "Frame B Test" in result_b.text
driver.switch_to.default_content()

// Java - Alternative Solution
WebElement f = driver.findElement(By.name("frameA"));
driver.switchTo().frame(f);
driver.findElement(By.id("a_btn")).click();
driver.switchTo().alert().accept();
driver.switchTo().defaultContent();

# Python - Alternative Solution
frame = driver.find_element(By.NAME, "frameA")
driver.switch_to.frame(frame)
driver.find_element(By.ID, "a_btn").click()
driver.switch_to.alert.accept()
driver.switch_to.default_content()
driver.switch_to.frame(driver.find_element(By.ID, "frameB"))
driver.find_element(By.ID, "b_input").send_keys("Frame B Test")
driver.find_element(By.ID, "b_btn").click()
assert "Frame B Test" in driver.find_element(By.ID, "b_result").text
driver.switch_to.default_content()


Tester Task
  1. Locate frame A using name frameA.
  2. Switch into frame A.
  3. Click the button with id a_btn.
  4. Verify the alert text is Frame A clicked.
  5. Accept the alert and switch back to the default content.
  6. Verify frame B with id frameB is displayed.
  7. Switch into frame B and enter Frame B Test in b_input.
  8. Click b_btn and verify b_result contains Frame B Test.