Selenium 无法切换到a<;内的iFrame;第节>;标签

Selenium 无法切换到a<;内的iFrame;第节>;标签,selenium,iframe,Selenium,Iframe,当我尝试切换到包含在标记中的iFrame时,我没有遇到这种帧异常。谁能帮我一下吗 我正在尝试切换到iFrame进行硒测试。我使用了driver.switchTo()方法切换到iFrame HTML: <section id="modal-root"> <div class="modal-wrapper"> <div id="#####" class="modal-container modal-enter-done"> <div cla

当我尝试切换到包含在
标记中的iFrame时,我没有遇到这种帧异常。谁能帮我一下吗

我正在尝试切换到iFrame进行硒测试。我使用了
driver.switchTo()
方法切换到iFrame

HTML:

<section id="modal-root">
 <div class="modal-wrapper">
   <div id="#####" class="modal-container modal-enter-done">
     <div class="modal ####" role="dialog">
    <button type="button" aria-label="Close Modal" class="button-icon 
        modal-close">
    <span class="icon icon-x">
    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" 
         role="presentation">
      <path d="M8.41421 7L13.7071 12.2929C14.0976 12.6834 14.0976 13.3166 
           13.7071 13.7071C13.3166 14.0976 12.6834 14.0976 12.2929 13.7071L7 
           8.41421L1.70711 13.7071C1.31658 14.0976 0.683418 14.0976 0.292893
       13.7071C-0.0976311 13.3166 -0.0976311 12.6834 0.292893 
           12.2929L5.58579 7L0.292893 1.70711C-0.0976311 1.31658 
      -0.0976311 0.683418 0.292893 0.292893C0.683418 -0.0976311 1.31658 
          -0.0976311 1.70711 0.292893L7 5.58579L12.2929 0.292893C12.6834 
          -0.0976311 13.3166 -0.0976311 13.7071 0.292893C14.0976 0.683418 
           14.0976 1.31658 13.7071 1.70711L8.41421 7Z" transform="translate(5 
           5)" fill="black">
      </path>
    </svg>
      </span>
    </button>
    <div class="modal-body">
      <div class="#####">
    <iframe title="######" id="#####" name="#####"src="######">
    </iframe>
     </div>
   </div>
 </div>
</div>
<div class="modal-overlay">
</div>
</div>
</section>
我得到以下例外:

org.openqa.selenium.NoSuchFrameException:未找到框架元素 名称或id iFrame\u id

我不确定是否能够直接切换到iFrame,因为它被包装在
标记中


感谢您的帮助

我通过@JeffC建议使用
id
name
实现了这一点。我使用了ID,我在代码中所做的唯一更改如下:

而不是:

driver.switchTo().frame(iFrame_id) 
。。。我用过:

 driver.switchTo().frame(findElement(By.id(iFrame_id)))

感谢所有帮助过我的人

我通过@JeffC建议使用
id
name
实现了这一点。我使用了ID,我在代码中所做的唯一更改如下:

而不是:

driver.switchTo().frame(iFrame_id) 
。。。我用过:

 driver.switchTo().frame(findElement(By.id(iFrame_id)))

感谢所有帮助过我的人

在页面源中搜索“frame”,查看是否有多个frame或iframe。您想要的可能是嵌套的。如果它只是一个iframe,那么只需使用索引切换即可。帧id可以是动态的。驱动程序.切换到().帧(0)@Sureshmani在使用索引0时将暂时起作用。在这种情况下,最好查看它是否有ID或名称并使用它。将来,可能会添加更多的帧,并且索引可能会意外失败,因为名称/ID不太可能更改。请尝试使用等待。。。您可能会看到此错误,因为它仍在加载:“new WebDriverWait(driver,10).until(ExpectedConditions.frametobeavailable)和switchtoit(By.locator));“@iamdanchhiv感谢您让这篇文章看起来很专业!在页面源中搜索“frame”,查看是否有多个frame或iframe。您想要的可能是嵌套的。如果它只是一个iframe,那么只需使用索引切换即可。帧id可以是动态的。驱动程序.切换到().帧(0)@Sureshmani在使用索引0时将暂时起作用。在这种情况下,最好查看它是否有ID或名称并使用它。将来,可能会添加更多的帧,并且索引可能会意外失败,因为名称/ID不太可能更改。请尝试使用等待。。。您可能会看到此错误,因为它仍在加载:“new WebDriverWait(driver,10).until(ExpectedConditions.frametobeavailable)和switchtoit(By.locator));“@iamdanchhiv感谢您让这篇文章看起来很专业!