自动化测试基础篇--Selenium iframe定位问题
摘自https://www.cnblogs.com/sanzangTst/p/7473437.html
有时候我们在定位的途中发现一个现象,元素就在那儿,不离不去,但是我们怎么整就是定不了位,这个时候就要具体网页的特殊性。这里介绍如果遇到了iframe的时候我们怎么处理。
一、frame和iframe区别
Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架
Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame>< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。
二、以网易邮箱(163邮箱)登录为例
使用iframe最多的就是网易的邮箱,恰巧我们经常的会拿网易的邮箱来做登录的练习,结果发现整死都定不了位,下面我们一步一步的解析163邮箱登录。
第一步:打开登录页面
这个没什么好说的,每个测试用例的第一步都是打开浏览器,打开需求网页。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 from selenium import webdriver 4 import time 5 url = 'http://mail.163.com/' 6 browser = webdriver.Firefox() 7 browser.get(url) 8 time.sleep(3)
![](https://images2017.cnblogs.com/blog/1065320/201709/1065320-20170904141702147-1685064069.png)
第二步:定位元素
我们先通过firebug看看这个和我们平常的网页有什么不同,我们以百度为例;![](https://images2017.cnblogs.com/blog/1065320/201709/1065320-20170904141743038-1096525115.png)
![](https://images2017.cnblogs.com/blog/1065320/201709/1065320-20170904141822960-681301186.png)
![](https://images2017.cnblogs.com/blog/1065320/201709/1065320-20170904141743038-1096525115.png)
![](https://images2017.cnblogs.com/blog/1065320/201709/1065320-20170904141822960-681301186.png)
通过对比发现,百度的搜索框是直接在Top Window上,而163邮箱的输入框在iframe#x-URS-iframe上,这就是iframe。我们怎么定位呢?