WebDriver中如何处理Iframe 及 嵌套Iframe

Posted 波比12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebDriver中如何处理Iframe 及 嵌套Iframe相关的知识,希望对你有一定的参考价值。

最近在用webdriver进行爬虫的时候,遇到了网站存在iframe的情况,处理了好久没有解决,后来发现原来webdriver自带处理方法,汗颜。。

1、iFrame有ID 或者 name的情况

//进入id="frame1"的frame中,定位id="div1"的div和id="input1"的输入框。

 

dr.switchTo().frame("frame1");
dr.findElement(By.id("div1"));
dr.findElement(By.id("input1"))

2、如果一个iFrame既没有id,也没有name,通用情况
// 定位frame位置,并选取frame(通过xpath来进行定位)
WebElement frame=driver.findElement(By.xpath( "/html/body/div[2]/div[8]/div[2]/div[3]/div/div[2]/div/iframe" ));
driver.switchTo().frame(frame);

3、跳出iFrame
//跳出frame,进入default content;重新定位id="id1"的div
dr.switchTo().defaultContent();

dr.findElement(By.id("id1"))

 

4、如果处理嵌套Iframe

业务场景: 定位“申请产品”下拉框,然后选择值操作:

技术分享

 

页面控件元素如下图所示:

技术分享

 

 

从信息来看:

 

第一个 Iframe 里面写的是 申请信息 页签
 
第二个Iframe 里面写的是 申请产品 借款用途等等内容

 

 

那下面如何来进行定位呢

一层一层来跳进Iframe中   退出是也一层一层进行

 


driver.switchTo().frame("cont_right_show");

driver.switchTo().frame("addLoanApp2");

 















以上是关于WebDriver中如何处理Iframe 及 嵌套Iframe的主要内容,如果未能解决你的问题,请参考以下文章

在Java 8中如何处理日期和时间

SpringBoot.09.SpringBoot中如何处理Filter抛出的异常

Sencha Touch V2 中如何处理方向变化

Rust 中如何处理分布式内存并行性? [关闭]

函数式编程中如何处理副作用?

函数式编程中如何处理副作用?