コードトレイル:
driver.switchTo().defaultContent();
List before = driver.findElements(By.tagName("iframe"));
for (WebElement t : before) {
System.out.println("iframe" + t.getAttribute("src"));
}
driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@src,'srcpath')]")));
List after = driver.findElements(By.tagName("iframe"));
for (WebElement t : after) {
System.out.println("iframe" + t.getAttribute("src"));
if(t.getAttribute("src").equalsIgnoreCase("expectedsrc")){
System.out.println("success");
break;
}
}
iframeに切り替える前に( abc )、 abc
のiframeが正しく表示されています。しかし、切り替え後、同じiframe
が印刷されます。しかし、実際には、 ‘abc’
iframe内に異なるiframeがあります。したがって、abcに切り替えた後は、abc内だけのiframeやabc
iframeと一緒にiframeを出力するはずです。
私は、 Iframe
に切り替えたことを明確にする
NoSuchFrameException
を表示しませんでした。
IFrameには id
属性、 class
属性、
src
属性はありません。
しかし、abc iframeのPageSourceを印刷すると、abc iframeのhtmlソースだけが出力されます。
String pagesrc = driver.switchTo()
.frame(driver.findElement(By.xpath("//iframe[contains(@src,'srcpath')]"))).getPageSource();
面白いことに、同じコードはChromeとFFで動作します。
Configuration: IEDriverServer: 3.12.0
IEBrowser: IE9 Jar : Selenium 3.4.0 JDK : 1.8
Html Source: Source
ベストアンサー
申し訳ありませんが、適切な答えはありません