Java iFrame没有显示

Java iFrame没有显示,java,iframe,webdriver,Java,Iframe,Webdriver,有人能帮我解决以下问题吗 拥有一个iframe,并通过xPath正确找到它 div[@id='sidebar']/div[@class='banner-300-250']//iframe 以下是源代码: <div class="banner-300-250"> <script type="text/javascript">if(!window.AdButler){(function(){var s=document.createElement("script");s

有人能帮我解决以下问题吗 拥有一个iframe,并通过xPath正确找到它

div[@id='sidebar']/div[@class='banner-300-250']//iframe
以下是源代码:

<div class="banner-300-250">
<script type="text/javascript">if(!window.AdButler){(function(){var   s=document.createElement("script");s.async=true;s.type="text/javascript";  s.src='https://servedbyadbutler.com/app.js';var   n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(s,n);}());}</script>
 <script type="text/javascript">var AdButler=AdButler||{};   AdButler.ads=AdButler.ads||[];var abkw=window.abkw||'';var plc177931=window.plc177931||0;document.write('<'+'div id="placement_177931_'+plc177931+'"></'+'div>'); AdButler.ads.push({handler:function(opt){AdButler.register(166212,177931,[300,250],'placement_177931_'+opt.place,opt);},opt:{place:plc177931++,keywords:abkw,domain:'servedbyadbutler.com'}});</script>     <script async="" type="text/javascript" src="https://servedbyadbutler.com/adserve/;ID=166212;size=300x250;setID=177931;type=async;domid=placement_177931_0;place=0;pid=894989;sw=1920;sh=1080;spr=1;rnd=894989;kw=sport"></script><div id="placement_177931_0"><iframe id="placement_177931_0_iframe" frameborder="0" scrolling="no" height="250" width="300"></iframe></div>
</div>
<iframe id="placement_177931_0_iframe" frameborder="0" scrolling="no" height="250" width="300"></iframe>
.
.
.
<a href="//wlpinnaclesports.adsrv.eacdn.com/C.ashx?btag=a_773b_3429c_&amp;affid=4609&amp;siteid=773&amp;adid=3429&amp;c=&amp;MediaID=3429&amp;IsAd=1&amp;     <script src="//pinnaclesports.host.bannerflow.com/bf_ph_642.js?btag=a_773b_3429" charset="utf-8" type="text/javascript"> </script>            
        </a>

如果(!window.AdButler){(function(){var s=document.createElement(“脚本”);s.async=true;s.type=“text/javascript”;s.src=”https://servedbyadbutler.com/app.js“;var n=document.getElementsByTagName(“脚本”)[0];n.parentNode.insertBefore(s,n);}();}”
var AdButler=AdButler | |{};AdButler.ads=AdButler.ads | |[];var abkw=window.abkw | |“”;变量plc177931=window.plc177931 | | 0;文件。写(“”);AdButler.ads.push({handler:function(opt){AdButler.register(166212177931[300250],'placement_177931_'+opt.place,opt);},opt:{place:plc177931++,关键字:abkw,域:'servedbyadbutler.com'});
.
.
.
使用此代码进行了尝试,当显示iframe时,它可以工作,但在某些页面上它不存在,并且在这种情况下,我得到了中断测试(在下面的代码中没有添加简单for循环,但它是编写的,因此在下面的代码中是计数器(I):

List<WebElement> bookieBanners = driver.findElements(By.xpath("//div[@id='sidebar']/div[@class='banner-300-250']"));
    System.out.println(bookieBanners.);
    if (bookieBanners.get(i).isDisplayed()) {
        System.out.println(bookieBanners);
        bookieBanners.get(i).click();
        BaseTest.sleepSeconds(2);
        switchToLastOpenedWindow(driver);
        System.out.println("Opened is page: " + driver.getCurrentUrl());
        BaseTest.closePrevWindows(driver);
    } else {
        System.out.println("There is no banner for bookies");
        continue;
      }
List bookiebaners=driver.findElements(By.xpath(//div[@id='sidebar']]/div[@class='banner-300-250']);
System.out.println(bookiebaners.);
if(bookiebaners.get(i).isDisplayed()){
System.out.println(书籍横幅);
bookiebaners.get(i).单击();
基本测试。睡眠秒(2);
切换至Astopenedwindow(司机);
System.out.println(“打开的是页面:+driver.getCurrentUrl());
BaseTest.关闭前车窗(驱动程序);
}否则{
System.out.println(“赌场没有横幅”);
继续;
}

提前感谢。

经过一番努力,解决方案如下:

List<WebElement> subMenuElements = driver.findElements(By.xpath(Found Elements));
    if (subMenuElements.size() > 0) {
        for (int p = 0; p < subMenuElements.size(); p++) {
            if (p < 9) {
                System.out.println("");
                System.out.println("******");
                //Open in another tab that page
                ((JavascriptExecutor) driver).executeScript("$('a').attr('target', '_blank');");
                subMenuElements.get(p).click();
                BaseTest.sleepSeconds(3);
                System.out.println("Checking banner on " + subMenuElements.get(p).getText());
                System.out.println("Checking banner on " + driver.getCurrentUrl());
                List<WebElement> bookieLinks = driver.findElements(By.xpath("Found inner iframe"));
                System.out.println("Second banner:");
                System.out.println("*****");
                if ((bookieLinks.size() > 0)) {
                    WebElement bookieShown = driver.findElement(By.xpath("Banner is clickable at position 'banner-300-250']"));
                    bookieShown.click();
                    switchToLastOpenedWindow(driver);
                    BaseTest.sleepSeconds(3);
                    System.out.println(driver.getCurrentUrl());
                    System.out.println("Page title: " + driver.getTitle());
                    BaseTest.closePrevWindows(driver);
                } else {
                    System.out.println("Banner not shown on current page");
                    BaseTest.closePrevWindows(driver);
                }                    
List subnumelements=driver.findElements(By.xpath(找到的元素));
if(subnumelements.size()>0){
对于(int p=0;p0)){
WebElement bookieShown=driver.findElement(By.xpath(“可在位置‘Banner-300-250’】处单击横幅”);
bookieShown.click();
切换至Astopenedwindow(司机);
基本测试。睡眠秒(3);
System.out.println(driver.getCurrentUrl());
System.out.println(“页面标题:+driver.getTitle());
BaseTest.关闭前车窗(驱动程序);
}否则{
System.out.println(“当前页面未显示横幅”);
BaseTest.关闭前车窗(驱动程序);
}