在Selenium脚本

时间:2018-03-14 18:43:40

标签: javascript java selenium-webdriver

我正在开发一个在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'是父框架,它包含多个子框架。用户单击某个按钮后子帧会刷新,我需要在刷新后验证子帧中的某些文本。 但是,在子帧刷新后,我无法访问脚本中的任何元素。有没有人在类似的情况下工作?什么是最好的解决方法?

1 个答案:

答案 0 :(得分:0)

刷新后,您的Webelement对象将变为“陈旧”并且不再是相同的对象。您需要(重新)实例化您的Webelement对象。您甚至可能需要先切换回“父”框架,然后再转到“子”框架,最后实例化您的webelement对象。