【问题标题】:How to perform actions on child iFrame using Selenium?如何使用 Selenium 对子 iFrame 执行操作?
【发布时间】:2013-01-21 07:03:11
【问题描述】:

我们如何对 iFrame 中的 iFrame 执行操作?

HTML:

<div id="div1">
 <iframe id="iframe1">
   <div id="div2">
     <iframe id="iframe2">
     </iframe>
   </div>
   <div id="div3">
     <iframe id="iframe3">
     </iframe>
   </div>
 </iframe>
</div>

我需要在 iframe2 和 iframe3 上执行操作。尝试使用以下代码:

1. driver.switchTo().frame("iframe1.0.iframe2");
2. WebElement firstFrame = driver.findElement(By.id("iframe1"));
   driver.switchTo().frame(firstFrame);
   WebElement secondFrame = driver.findElement(By.id("iframe2"));
   driver.switchTo().frame(secondFrame);

但无法解决问题。

请建议是否可以采用其他方法。

【问题讨论】:

    标签: java iframe selenium selenium-webdriver


    【解决方案1】:

    这样试试

    //switch the control to first frame
    WebElement firstFrame = driver.findElement(By.id("iframe1"));
    driver.switchTo().frame(firstFrame);
    
    //switch the control to second frame
    WebElement secondFrame = driver.findElement(By.id("iframe2"));
    driver.switchTo().frame(secondFrame);
    
    //Switch back the control to first frame before switch it to frame3
    driver.switchTo().frame(firstFrame);
    
    WebElement thirdFrame = driver.findElement(By.id("iframe3"));
    driver.switchTo().frame(thirdFrame);
    

    【讨论】:

      【解决方案2】:

      试试这个 sn-p。

       //Switch To parent frame "iframe1"
       WebElement parentFrame = driver.findElement(By.id("iframe1"));
       driver.switchTo.frame(parentFrame );
      
       //Switch To first child frame "iframe2"
       WebElement firstChildFrame = driver.findElement(By.id("iframe2"));
       driver.switchTo.frame(firstChildFrame ); 
      
       //Do some actions on iframe2
       //Switch To Top (or) Parent frame by using
       driver.switchTo().defaultContent();
      
       //Switch To parent frame "iframe1"
       WebElement parentFrame = driver.findElement(By.id("iframe1"));
       driver.switchTo.frame(parentFrame );
      
       //Switch To second child frame "iframe3"
       WebElement secondChildFrame = driver.findElement(By.id("iframe3"));
       driver.switchTo.frame(secondChildFrame); 
      

      有关选择框架的更多详细信息,请使用此http://darrellgrainger.blogspot.ca/2012/04/frames-and-webdriver.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-29
        • 1970-01-01
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 2018-10-26
        • 2016-06-16
        • 1970-01-01
        相关资源
        最近更新 更多