我正在开发一个在UI中嵌套了Iframe的应用程序。一些Iframe在测试执行期间刷新。我们有什么方法可以使用Selenium模拟刷新的iframe?我尝试过使用Javascript和WebDriverWait,但它没有用。
我使用了以下方法:
public static void waitForIframeToLoad(String frameName){
WebDriverWait wait = new WebDriverWait(driver,60);
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frameName));
}
public static void refreshIFrameUsingJavaScript(String iFrameName)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(String.format("document.getElementById('{0}').src = " +
"document.getElementById('{0}').src", iFrameName));
}
但是这两种方法都不起作用。我可以使用driver.switchTo()来切换帧.frame(“main”)。switchTo()。frame(“framename”)
框架'main'是父框架,它包含多个子框架。用户单击某个按钮后子帧会刷新,我需要在刷新后验证子帧中的某些文本。 但是,在子帧刷新后,我无法访问脚本中的任何元素。有没有人在类似的情况下工作?什么是最好的解决方法?
答案 0 :(得分:0)
刷新后,您的Webelement对象将变为“陈旧”并且不再是相同的对象。您需要(重新)实例化您的Webelement对象。您甚至可能需要先切换回“父”框架,然后再转到“子”框架,最后实例化您的webelement对象。