in module/geb-core/src/main/groovy/geb/frame/DefaultFrameSupport.groovy [68:92]
private <T> T executeWithFrame(frame, Page page, Closure<T> block) {
def originalPage = browser.page
browser.driver.switchTo().frame(frame)
if (page) {
browser.verifyAtImplicitly(page)
}
try {
Closure cloned = block.clone()
cloned.delegate = browser
cloned.resolveStrategy = DELEGATE_FIRST
cloned.call()
} finally {
browser.page(originalPage)
def targetLocator = browser.driver.switchTo()
try {
targetLocator.parentFrame()
} catch (WebDriverException e) {
if (e.message.startsWith("Command not found") || e.message.startsWith("Unknown command")) {
targetLocator.defaultContent()
} else {
throw e
}
}
}
}