java selenium (十四) 处理Iframe 中的元素

有时候我们定位元素的时候,发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面

阅读目录

什么是iframe

iframe 就是HTML 中,用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中,可以嵌套很多层。

selenium 中提供了进入iframe 的方法

// 进入 id 叫frameA 的 iframe
dr.switchTo().frame("frameA");
// 回到主窗口
dr.switchTo().defaultContent();

main.html

<html>
<head>
    <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.html

<html>
<head>
    <title>this is a frame!</title>
</head>
<body>
    <div id="div1">this is iframes div,</div>
    <input id="iframeinput"></input>
</body>
</html>  

selenium 代码

    public static void testIframe(WebDriver driver)
    {
        driver.get("E:\\StashFolder\\[email protected]\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\Selenium Webdriver\\frame\\main.html");    

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

        driver.switchTo().frame("frameA");
        driver.findElement(By.id("iframeinput")).sendKeys("iframe input");

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

        // 回到主窗口
        driver.switchTo().defaultContent();
        driver.findElement(By.id("maininput")).sendKeys("main input");
    }
时间: 2024-12-25 23:02:53

java selenium (十四) 处理Iframe 中的元素的相关文章

Java Selenium (十二) 操作弹出窗口 &amp; 智能等待页面加载完成 &amp; 处理 Iframe 中的元素

一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然后遍历, 使用swithcto.window(newwindow_handle)方法. 就可以定位到新的窗口. 测试页面的HTML <html> <head> <title>常见web ui元素操作, 及API使用</title> <script type

Java中通过Selenium WebDriver定位iframe中的元素

问题:有一些元素,无论是通过id或是xpath等等,怎么都定位不到. 分析:这很可能是因为你要定位的元素被嵌套在了当前页面的一个iframe元素中,Selenium对iframe中的元素有特殊的定位规则,WebDriver不能够直接进行定位. 解决办法:我们要把这个iframe元素找出来,让WebDriver转移到这个iframe元素上,之后再让WebDriver对iframe中的元素进行定位. 因为最近在用Java来做一些东西,所以就顺便说一下Selenium在Java环境下的使用,总共分三步

二十四、Struts2中的UI标签

二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) 可以使用OGNL表达式 模板: 常量设置的:struts.ui.theme=xhtml 开发中建议设置为struts.ui.theme=simple;

全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充

1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 Opera 9.5+. 2. classList 属性 :  classList 属性是新集合类型 DOMTokenList  的实例.DOMTokenList 类型有一个lenght 属性 ,表示包含了多少子元素,要取得每一个元素可以通过item() 方法访问,也可以用 [ ] 方法 访问. 此外这

第十四单元 linux中的设备访问

第十四单元 linux中的设备访问 一 设备访问 1 设备识别 /dev/xdxn:硬盘设备/dev/sda1 /dev/cdrom:光驱 /dev/mapper/*:虚拟设备 2.设备的使用 查看设备: fdisk -l:查看真实存在的设备 cat /proc/partitions:系统能够识别的设备 blkid:系统能够挂载使用的设备id df:查看设备被系统使用的情况 设备挂载: mount 设备挂载点 mount /dev/sdb1/mnt#把系统中第二块硬盘的第一个分区挂载到/mnt目

Selenium多层级的iframe中元素的定位

很多时候我们遇到多层级的iframe就会想各种方法去获取iframe中的元素,但其实很简单就可以做到的,就是一级一级获取就可以了,获取至你需要的那个层级即可,下面看下实际的案例:(转) <frame src="" id="index_main" name="main" scrolling="Yes" noresize="noresize"> <iframe id="Editor1

父窗口中获取iframe中的元素

js 在父窗口中获取iframe中的元素 1. Js代码   格式:window.frames["iframe的name值"].document.getElementById("iframe中控件的ID").click(); 实例:window.frames["ifm"].document.getElementById("btnOk").click(); 2. Java代码   格式: var obj=document.get

Js/Jquery获取iframe中的元素

在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素.或者在iframe框架中使用父窗口的元素. JavaScript 在父窗口中获取iframe中的元素 格式:window.frames["iframe的name值"].document.getElementById("iframe中控件的ID").click(); 实例:window.frames["ifm"].document.getElementById

jQuery如何获取iframe中的元素

jQuery如何获取iframe中的元素:这个问题其实非常简单,既然要获取iframe中的元素,那么首先要获取iframe.关于获取iframe这里就不介绍了可以参阅父窗口和iframe中对象互相传值简介一章节. 下面直接看一段代码就能够很轻松明白: $(window.frames["main"].document).find("ul") 以上代码id属性值为main的iframe元素中的ul元素. 原文地址是:http://www.softwhy.com/foru