1.简介
原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了。但是还是有小伙伴或者童鞋们私下问这个问题,那么宏哥就单独写一篇关于iframe网页处理的文章。
2.iframe是什么
iframe就是我们常用的iframe标签:
3.selenium处理iframe的方法
// 进入 id 叫frameA 的 iframe dr.switchTo().frame("frameA"); // 回到主窗口 dr.switchTo().defaultContent();
4.项目实战
网上找了半天也没有找到这样的例子,以前百度、163的邮箱是这种。最近几年技术升级了,已经不是这种了。不找了索性宏哥自己在本地做一个这样的小demo给小伙伴或者童鞋们来演示一下。
注:本文演示的数据大家可以在公众号后台回复 宏哥41,在java+selenium->41 文件夹领取。
4.1被测的HTML代码
1.准备测试练习index.html,如下:
DOCTYPE html>
<html>
<head>
<title>北京-宏哥|iframeTestDemotitle>
<style type="text/css">
.button1 {
background-color: #f44336;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 28px;
margin-bottom: 100px;
text-decoration:none;
color: white;
}
#myAnchor
{
text-decoration:none;
color: white;
}
style>
head>
<body style="text-align:center">
<div id="wrapper" style="position: relative;top: 100px;left:0px;">
<button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥a>button>br>
<div id="id1">I am a index page's div!div>
<input type="text" id="maininput" />
<br/>
<iframe id="frameA" frameborder="0" scrolling="no" style="left:857px;position:absolute;" src="iframe.html">iframe>
div>
body>
html>
2.准备测试练习iframe.html,如下:
DOCTYPE html>
<html>
<head>
<title>I am a iframe!title>
head>
<body>
<div id="div1">I am iframes div!div>
<input id="iframeinput">input>
body>
html>
3.页面效果,如下图所示:
5.代码实战练习
5.1代码设计
5.2参考代码
package lessons; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * @author 北京-宏哥 * * 《手把手教你》系列技巧篇(四十一)-java+ selenium自动化测试 - 处理iframe(详解教程) * * 2021年11月7日 */ public class testIframe { @Test public void testRadio() throws InterruptedException { System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); WebDriver driver =null; driver =new ChromeDriver(); driver.get("file:///C:/Users/DELL/Desktop/test/iframe/index.html"); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // 在 主窗口的时候 driver.findElement(By.id("maininput")).sendKeys("This is a main input!"); // 此时 没有进入到iframe, 以下语句会报错 //driver.findElement(By.id("iframeinput")).sendKeys("iframe input"); driver.switchTo().frame("frameA"); driver.findElement(By.id("iframeinput")).sendKeys("This is a iframe input!"); // 此时没有在主窗口,下面语句会报错 //driver.findElement(By.id("maininput")).sendKeys("main input"); // 回到主窗口 driver.switchTo().defaultContent(); driver.findElement(By.id("maininput")).sendKeys("This is a main input!"); } }
5.3运行代码
1.运行代码,右键Run AS->Junit Test,控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作,如下小视频所示:
6.小结
好了,时间不早了,今天就分享到这里,下一篇宏哥找一个还有iframe的在线网页给小伙伴或者童鞋们实战演示一下。