2.9 iframe
7k_H g&I)gtQy/z
I{0一、frame和iframe区别51Testing软件测试网j2F(Mz\h4?
Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架
_MO+r@%NQV&e'B1N0Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入
的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame><
/Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内
容的代码。51Testing软件测试网;FY M2]L
pH4L8psU8]0二、案例操作:163登录界面51Testing软件测试网(_y$N6F5|p(E%ib
1.打开http://mail.163.com/登录页面51Testing软件测试网
Sq"_bEo,e
51Testing软件测试网
Yf&F#cUh$a0_e2.用firebug定位登录框51Testing软件测试网eNvF u
51Testing软件测试网MV(d;J&n8t6M3.鼠标停留在左下角(定位到iframe位置)时,右上角整个登录框显示灰色,说明iframe区域是整个登录框区域51Testing软件测试网3~a#~R%pB(Zx
51Testing软件测试网 l|5N$u] p t7uD4.左下角箭头位置显示iframe属性<iframe id="x-URS-iframe" frameborder="0" name="" 51Testing软件测试网\H5~)u}6HM8]_0]G
51Testing软件测试网H6\@B6kCVP'M:SI51Testing软件测试网 J5\s;g#vp(n;|Y'u
9Hrkn,u7g-p0 三、切换iframe
Pie%?"q
Q,R C01.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上
#k#[&H2_&Y6oh}8S9N@(e02.用switch_to_frame方法切换,此处有id属性,可以直接用id定位切换
4l8s+m5NEBHP051Testing软件测试网0^{z"~Z(B51Testing软件测试网~9X dUL&z
I(|g:a5c%vTa{0
#CY1pGX g-~,L3I051Testing软件测试网4l
J!? s'}yO&Idj
U 51Testing软件测试网't ^nM,E.{qJ
/XaZ
bGI'\p6Y0四、如果iframe没有id怎么办?
j'L:Dnn)B&_01.这里iframe的切换是默认支持id和name的方法的,当然实际情况中会遇到没有id属性和name属性为空的情况,这时候就需要先定位iframe元素对象
SY\Hm!o }#P9]02.定位元素还是之前的八种方法同样适用,这里我可以通过tag先定位到,也能达到同样效果
!]vJRB3H0m1_d1~`,S4T
a0
,k3ny [Xn051Testing软件测试网5x3KaK,Wrab!N 51Testing软件测试网+EJeF*OHP"z
}Xh;z1a/bUKI0五、释放iframe51Testing软件测试网d|/^(v;M%wBF
1.当iframe上的操作完后,想重新回到主页面上操作元素,这时候,就可以用switch_to_default_content()方法返回到主页面
s`h7y%r0#Pl9I ^I mj)k@$J0
q\&gJXe R0 A1Xf%LQ7T&L4A;v0
UI'}&V7D+B7x$H,c0$GGx_x{$Ok@%@H4~0六、如何判断元素是否在iframe上?51Testing软件测试网xW'U6m"u5wkS#W
1.定位到元素后,切换到firepath界面
cy8X,pPhV02.看firebug工具左上角,如果显示Top Window说明没有iframe
G/R!j%BQ03.如果显示iframe#xxx这样的,说明在iframe上,#后面就是它的id
7hSW;?8J0kk1[,UNi0
5C\G9G,QG,h0Bi5gg
SDE0 51Testing软件测试网KVn|0X5pL1n
51Testing软件测试网i B/h}%N%mp七、如何解决switch_to_frame上的横线呢?
1l:jcWx$@L'J6a01.先找到官放的文档介绍51Testing软件测试网&D-s-Bc{
51Testing软件测试网~ ^2H~ ZE%A1D0M6^)c51Testing软件测试网5N*N\"s%Kx:q
y
-Y:_vLW8XT
YP4]0
t5^5IL@s2J~0 G#v(WKhP02.python的脚本上面划一横线,是说这个语法已经过时了(也可以继续用,只是有部分人有强迫症)。上面文档介绍说官方已经不推荐上面的写法了,用这个写法就好了driver.switch_to.frame()
5V$?.m0|6Ek?9A,~"__0_&\:v
Z'o;HU/Y051Testing软件测试网c`}xC;aw
八、参考代码如下:51Testing软件测试网Vtc@vIr&s
#coding:utf-8fromseleniumimportwebdriver
driver=webdriver.Firefox()
driver.get("http://mail.163.com/")
driver.implicitly_wait(30)#切换iframe#iframe. = driver.find_element_by_tag_name("iframe")#driver.switch_to_frame(iframe)#driver.switch_to_frame("x-URS-iframe")driver.switch_to.frame("x-URS-iframe")
driver.find_element_by_name("email").send_keys("123")
driver.find_element_by_name("password").send_keys("456")#释放iframe,重新回到主页面上driver.switch_to.default_content()