0
我试图让所有在嵌套的iframe的SRC属性的src属性但我正在逐渐陈旧参考exception.Here是代码获得旧元素引用异常,同时试图提取在嵌套的iframe
public class findAllSources {
ArrayList<String> sources = new ArrayList<String>();
@Test
public void iframeTest() {
System.setProperty("webdriver.chrome.driver", "path to chrome driver");
ChromeDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.engadget.com/");
List<WebElement> allFrames = driver.findElements(By.xpath("//iframe[not(contains(@style,'display:none'))]"));
for (WebElement frame : allFrames) {
if(frame.isDisplayed()){
System.out.println("We clicked frame "+frame);
System.out.println(" with a source "+frame.getAttribute("src"));
sources.add(frame.getAttribute("src"));
driver.switchTo().frame(frame);
findDeeperFrames(driver);
driver.switchTo().defaultContent();
}
}
}
public void findDeeperFrames(ChromeDriver driver){
List<WebElement> deeperFrames = driver.findElements(By.xpath("//iframe[not(contains(@style,'display:none'))]"));
for (WebElement nframe: deeperFrames) {
if (nframe.isDisplayed()){
if (!nframe.getAttribute("src").isEmpty()){
sources.add(nframe.getAttribute("src"));
System.out.println("Nested source "+ nframe.getAttribute("src"));}
driver.switchTo().frame(nframe);
findDeeperFrames(driver);
//getting out of the frame
driver.switchTo().defaultContent();
}
}
}
}
是否有任何我可以实现我的目标的其他方法?
我得到同样的错误此代码太 –
陈旧的例外是当您尝试切换到另一个框架orwindow然后经过切换回原来的窗口;您尝试使用之前在切换之前存储的webelements,哪条线会引发您该错误? – kushal
如果(nframe.isDisplayed()){} –