selenium实战:处理Iframe 中的元素

package javaBase;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;



/**
 * java selenium
 * 什么是iframe
 * iframe 就是HTML 中,用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中,可以嵌套很多层。
 */
public class TestSetSeleniumServerJAR {
    public static void main(String[] args) {

        //谷歌浏览器
        WebDriver driver = new ChromeDriver();

        /**
         *有时候我们定位元素的时候,发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面
         */
        driver.get("http://localhost:8888/selenium/main.html");

        // 在 主窗口的时候
        driver.findElement(By.id("maininput")).sendKeys("main input");
        // 此时 没有进入到iframe, 以下语句会报错
        //driver.findElement(By.id("iframeinput")).sendKeys("iframe input");

        //进入 id 叫frameA 的 iframe
        //dr.switchTo().frame("frameA");
        //进入frame窗口
        driver.switchTo().frame("frameA");
        driver.findElement(By.id("iframeinput")).sendKeys("iframe input");

        // 此时没有在主窗口,下面语句会报错
        //driver.findElement(By.id("maininput")).sendKeys("main input");

        // 回到主窗口
        //dr.switchTo().defaultContent();
        // 回到主窗口
        driver.switchTo().defaultContent();
        driver.findElement(By.id("maininput")).sendKeys("第2次输入main input");
    }
}

main html代码如下

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>FrameTest</title>
 </head>
 <body>
    <div id="id1">this is main page's div!</div>
    <input type="text" id="maininput" />
    <br/>
    <iframe id="frameA" frameborder="0" scrolling="no" style="left:0;position:absolute;" src="frame.html"></iframe>
 </body>
</html>

frame代码如下

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>this is a frame!</title>
 </head>
 <body>
    <div id="div1">this is iframes div,</div>
    <input id="iframeinput"></input>
 </body>
</html>

 

posted @ 2021-09-07 16:12  测试长流  阅读(381)  评论(0)    收藏  举报