无法使用Selenium Java测试用例调用HTML框架链接

无法使用Selenium Java测试用例调用HTML框架链接,java,selenium,selenium-webdriver,iframe,frame,Java,Selenium,Selenium Webdriver,Iframe,Frame,我有一个带有框架的私有JSP URL 快照: 正如您在快照中看到的,我希望单击“复制管理”,然后单击左框中的“管理队列” 查看页面来源: <!-- Mark the file as a JSP and set up the classes to import --> <HEAD> <link rel="icon" href="/IDSWebApp/IDSgui/tds-16.ico" type="image/x-icon" /> <LINK REL=

我有一个带有框架的私有JSP URL

快照:

正如您在快照中看到的,我希望单击“复制管理”,然后单击左框中的“管理队列”

查看页面来源:

<!-- Mark the file as a JSP and set up the classes to import -->

<HEAD>
<link rel="icon" href="/IDSWebApp/IDSgui/tds-16.ico" type="image/x-icon" />
<LINK REL="SHORTCUT ICON" HREF="/IDSWebApp/IDSgui/tds-16.ico" type="image/x-icon">
</HEAD>

<HTML dir='ltr'>

<HEAD>
<TITLE>
IBM Security Directory Server Web Administration Tool
</TITLE>
</HEAD>
<FRAMESET ROWS="40,*">

<FRAME SRC="/IDSWebApp/IDSjsp/IDSBannerFrame.jsp" TITLE="Banner Frame" NAME="BannerFrame" MARGINWIDTH="1" MARGINHEIGHT="1" SCROLLING="NO" NORESIZE FRAMEBORDER="1" FRAMESPACING="1" BORDERCOLOR="#000000">

<FRAMESET COLS="20%,80%">

<FRAME SRC="/IDSWebApp/IDSjsp/IDSNavFrame.jsp" TITLE="Navigation frame" NAME="NavFrame" MARGINWIDTH="1" MARGINHEIGHT="1" SCROLLING="AUTOMATIC" FRAMEBORDER="1" FRAMESPACING="1" BORDERCOLOR="#000000">

<FRAME SRC="/IDSWebApp/IDSjsp/IDSWorkFrame.jsp" TITLE="Work Area Frameset" NAME="WorkArea" MARGINWIDTH="1" MARGINHEIGHT="1" SCROLLING="AUTOMATIC" FRAMEBORDER="1" FRAMESPACING="1" BORDERCOLOR="#000000">

<NOFRAMES>
<BODY>
The IBM Security Directory Server Web Administration Tool does not currently support Web browsers that do not support frames. Contact the Directory Server administrator to find a Web browser that supports frames.
</BODY>
</NOFRAMES>

</FRAMESET>

<NOFRAMES>
<BODY>
The IBM Security Directory Server Web Administration Tool does not currently support Web browsers that do not support frames. Contact the Directory Server administrator to find a Web browser that supports frames.
</BODY>
</NOFRAMES>

</FRAMESET>

</HTML>
在打印“After wait”后,所有if条件都不满足,然后它最终在WebDriverWait上超时

你能告诉我为什么所有的if条件都失败了,我们如何调用所需的链接吗?到目前为止,这些建议都没有起到任何作用


我使用的是jdk1.8 64位

将您的
if-else
保存在
中,并尝试捕获
。由于网页上不存在元素,您将看到错误。点击此[链接]了解更多信息我将使用try-catch,但您能否从本地驱动器加载我的html,并查看当视图源和视图框架源显示我们的元素时,元素为何丢失?这个问题应该很容易重现。您已经将驱动程序切换到帧。。。然后测试框架是否有自己的内部,而它没有。框架内的所有内容都是顶部横幅和另一个框架集。。。这些是帧(“”),不是iFrame(“”)。所以“//iframe”在这里不起作用…@pcalkins这就是我所怀疑的。那么,如何切换到框架而不是作为selenium Java代码的iFrame呢?我最终能够实现这一点。@pcalkins正确地识别了这个问题,它是一个帧而不是一个i帧。请将您的
if-else
保存在
中,并尝试捕获
。由于网页上不存在元素,您将看到错误。点击此[链接]了解更多信息我将使用try-catch,但您能否从本地驱动器加载我的html,并查看当视图源和视图框架源显示我们的元素时,元素为何丢失?这个问题应该很容易重现。您已经将驱动程序切换到帧。。。然后测试框架是否有自己的内部,而它没有。框架内的所有内容都是顶部横幅和另一个框架集。。。这些是帧(“”),不是iFrame(“”)。所以“//iframe”在这里不起作用…@pcalkins这就是我所怀疑的。那么,如何切换到框架而不是作为selenium Java代码的iFrame呢?我最终能够实现这一点。@pcalkins正确地指出了这个问题,它是一个框架而不是一个i框架。
<!-- Mark the file as a JSP and set up the classes to import -->

<HTML dir='ltr'>

<HEAD>
<style type="text/css">
FONT { font-size: 100%; }
.navHeading {PADDING-TOP: 4px;PADDING-BOTTOM: 4px;PADDING-LEFT: 2px;FONT-WEIGHT: bold;FONT-SIZE: 70%;FONT-FAMILY: Arial,Helvetica,sans-serif;BACKGROUND-COLOR: #D1D9E8}
.navTask {PADDING-LEFT: 2px;FONT-SIZE: 60%;FONT-FAMILY: Arial,Helvetica,sans-serif;BACKGROUND-COLOR: #D1D9E8}
</style>
<TITLE>
Navigation frame
</TITLE>
</HEAD>
<Body bgColor="#D1D9E8">

<table border=0 cellpadding=0 cellspacing=0 width="100%" bgcolor="#D1D9E8" xbgcolor="#000000">

<tr><td nowrap class="navHeading">
<IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" HEIGHT="16" WIDTH="16">
<A HREF="/IDSWebApp/IDSWelcome" Target="WorkFrame" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnDocument.gif" title="Click here to launch Introduction" alt="Click here to launch Introduction" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><font size="2" color="#454589" face="Arial,Helvetica,sans-serif" >Introduction</Font></A>
</td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idspasswd#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open User properties" alt="Click here to open User properties" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open User properties" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">User properties</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idssrvadm#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Server administration" alt="Click here to open Server administration" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Server administration" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Server administration</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idsproxy#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Proxy administration" alt="Click here to open Proxy administration" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Proxy administration" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Proxy administration</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idsdmt#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Schema management" alt="Click here to open Schema management" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Schema management" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Schema management</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idsdirmgmt#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Directory management" alt="Click here to open Directory management" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Directory management" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Directory management</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idsreplication#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Replication management" alt="Click here to open Replication management" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Replication management" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Replication management</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idstid#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Realms and templates" alt="Click here to open Realms and templates" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Realms and templates" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Realms and templates</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<A HREF="/IDSWebApp/IDSjsp/IDSNavFrame.jsp?opennav=idsusrgrp#spot" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnTnClosed.gif" title="Click here to open Users and groups" alt="Click here to open Users and groups" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/WnFolderClosed.gif" title="Click here to open Users and groups" alt="" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><Font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Users and groups</Font></A></td></tr>
<tr><td nowrap class="navHeading">
<IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" HEIGHT="16" WIDTH="16">
<A HREF="/IDSWebApp/IDSLogout" Target="_top" BORDERCOLOR="#000000"><IMG SRC="/IDSWebApp/IDSgui/WnDocument.gif" title="Click here to launch Logout" alt="Click here to launch Logout" align="texttop" border="0" HEIGHT="16" WIDTH="16"><IMG SRC="/IDSWebApp/IDSgui/Blank.gif" alt="" border="0" align="texttop" HEIGHT="16" WIDTH="2"><font size="2" color="#454589" face="Arial,Helvetica,sans-serif">Logout</Font></A>
</td></tr>

</table>
</BODY>
</HTML>
   WebDriverWait waitforme = new WebDriverWait(driver,5,2000);
   System.out.println("before wait");
   waitforme.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("BannerFrame"));
   System.out.println("after wait");
//Checking nested frames here
        if (driver.findElements(By.xpath("//iframe[@name='BannerFrame']")).size()>0)
        {
            System.out.println("inside frame 1");
         driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='BannerFrame']")));
            if (driver.findElements(By.xpath("//iframe[@name='NavFrame']")).size()>0)
            {
                System.out.println("inside frame 2");
            driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='NavFrame']")));
                if (driver.findElements(By.xpath("//iframe[@name='WorkArea']")).size()>0)
                {
                    System.out.println("inside frame 3");
            driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='WorkArea']")));

            }

        }
        else
        {
            if (driver.findElements(By.xpath("//iframe[@name='WorkArea']")).size()>0)
            {
                System.out.println("inside frame 3");
        driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='WorkArea']")));
            }
        }

    }
    else
    {
        if (driver.findElements(By.xpath("//iframe[@name='NavFrame']")).size()>0)
        {
            System.out.println("inside frame 2");
        driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='NavFrame']")));

            if (driver.findElements(By.xpath("//iframe[@name='WorkArea']")).size()>0)
            {
                System.out.println("inside frame 3");
       driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='WorkArea']")));

            }       

        }
        else
        {
            if (driver.findElements(By.xpath("//iframe[@name='WorkArea']")).size()>0)
            {
                System.out.println("inside frame 3");
        driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@name='WorkArea']")));

            }   
        }
    }

    //Click on Replication management link
    WebDriverWait wait=new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[./font[text()='Replication management']]"))).click();