在Selenium中,要从一个页面返回到主页,
可以使用driver.switch_to.default_content()
方法来切换回主页的上下文(context)。
然后,如果需要进入另一个frame,可以使用driver.switch_to.frame()
方法。
以下是一个简单的代码示例:
from selenium import webdriver
# 假设driver是已经初始化的WebDriver对象
driver.get("http://www.example.com") # 访问主页
# 假设你现在在一个iframe中
driver.switch_to.frame("iframe_id") # 进入iframe
# 做一些操作...
# 返回主页上下文
driver.switch_to.default_content()
# 现在如果你想进入另一个frame
driver.switch_to.frame("another_iframe_id") # 进入另一个iframe
# 做一些操作...
# 最后,如果需要返回主页上下文
driver.switch_to.default_content()
在这个例子中,首先通过driver.switch_to.frame()
进入了一个名为"iframe_id"的iframe。完成操作后,使用driver.switch_to.default_content()
返回到主页的上下文。随后又通过driver.switch_to.frame()
进入了另一个名为"another_iframe_id"的iframe。在完成最后的操作后,再次使用driver.switch_to.default_content()
返回到主页上下文。
用参数的值来定位frame元素
@FindBy(how = How.XPATH, using = "//frame[contains(@scrolling,'auto')]")
private List<WebElement> transferFrameList;
@SneakyThrows public void approvedRequestFromAuthorise(String screenShotName){ Thread.sleep(2000); switchToFrame(); Thread.sleep(1000); setWindowsMax(); waitUntilElementVisible(unauthorisedPage); int size = doubleApproveParent.size(); getTransactionRef(size); printWindowHandle("start1"); clickElement(doubleApproveParent.get(size-1)); Thread.sleep(3000); takeScreenshot(screenShotName); Thread.sleep(1000); driver.switchTo().parentFrame(); Thread.sleep(1000); printWindowHandle("start2"); findFrame(); int frameSize = transferFrameList.size(); logger.info("frameSize: " + frameSize); driver.switchTo().frame(transferFrameList.get(frameSize-1)); Thread.sleep(1000); clickElement(doubleApprove); Thread.sleep(3000); }