测试必须在时间、质量和成本之间获取一个平衡点,这是测试策略和测试设计的价值体现。

2.9 iframe

上一篇 / 下一篇  2018-06-12 10:48:12 / 个人分类:Python+Selenium2 WebDriver API

2.9 iframe

C*rOrD"HR]%p0一、frame和iframe区别51Testing软件测试网S:\H [ GP L'BR(L
Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性。 frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架51Testing软件测试网P Y4b tu+\
Iframe标记又叫浮动帧标记,可以用它将一个HTML文档嵌入在一个HTML中显示。它和Frame标记的最大区别是在网页中嵌入 的<Iframe></Iframe>所包含的内容与整个页面是一个整体,而<Frame>< /Frame>所包含的内容是一个独立的个体,是可以独立显示的。另外,应用Iframe还可以在同一个页面中多次显示同一内容,而不必重复这段内 容的代码。

/Ez(tU `~0

^-m8@4J^N0二、案例操作:163登录界面51Testing软件测试网k%u*wKF
1.打开http://mail.163.com/登录页面51Testing软件测试网!Fnm,Y{

51Testing软件测试网.T1Z U[9Om^.P

2.用firebug定位登录框

%R8X[ JS g4s0

L$L;{6^,i03.鼠标停留在左下角(定位到iframe位置)时,右上角整个登录框显示灰色,说明iframe区域是整个登录框区域

p sTC)Y/MT)D051Testing软件测试网}R*o'me%rax

4.左下角箭头位置显示iframe属性<iframe id="x-URS-iframe" frameborder="0" name="" 

[5\;A ?x!h}0

,lP'Qk N:}051Testing软件测试网uy,k^ SO

51Testing软件测试网#AM~%OqH

 三、切换iframe51Testing软件测试网z"y gg$`k
1.由于登录按钮是在iframe上,所以第一步需要把定位器切换到iframe上
)MV(C:z;a:?3r02.用switch_to_frame方法切换,此处有id属性,可以直接用id定位切换51Testing软件测试网q+\ybe/y e2|c0O.t

8M y QG0N V051Testing软件测试网;Q!C(L3{ {5N@:r`N

51Testing软件测试网 FH,rWuu

 

s9CD4xb l!H051Testing软件测试网 Pi ~8q o1`6_6puNx

 51Testing软件测试网5aB ["NZTaCk

0gRr h)l+s0四、如果iframe没有id怎么办?51Testing软件测试网!Z0W:tm)j
1.这里iframe的切换是默认支持id和name的方法的,当然实际情况中会遇到没有id属性和name属性为空的情况,这时候就需要先定位iframe元素对象51Testing软件测试网}5e/s(Fs5_^1L
2.定位元素还是之前的八种方法同样适用,这里我可以通过tag先定位到,也能达到同样效果51Testing软件测试网E:`-j)@;i2Y^

51Testing软件测试网 Y-[FdNl,\F!@

51Testing软件测试网-r#{ ^'I:D I6~OuU

51Testing软件测试网 ENY'FZ C6A}jJ4i j

 51Testing软件测试网 e J0vSyz

51Testing软件测试网K0qj w~9S9E4|u

五、释放iframe51Testing软件测试网B)r_S6X|7tG
1.当iframe上的操作完后,想重新回到主页面上操作元素,这时候,就可以用switch_to_default_content()方法返回到主页面

5j'Ba:R4a5bW051Testing软件测试网jO-hoC

51Testing软件测试网#w8\i e(hGG&e

51Testing软件测试网9zqT^.D,A

 51Testing软件测试网.},LT1QQ1qJ

/Y!f'D%l{K(Vi(V't/`0六、如何判断元素是否在iframe上?
,S,s&_F.T(ze8X01.定位到元素后,切换到firepath界面51Testing软件测试网2t}b"R1b2c']mmf
2.看firebug工具左上角,如果显示Top Window说明没有iframe51Testing软件测试网%Fu:Stz/TpZ*[0h
3.如果显示iframe#xxx这样的,说明在iframe上,#后面就是它的id51Testing软件测试网]h8o0U4wk

!UK n\ A.Pj p051Testing软件测试网8GK!E#Z/t,P

51Testing软件测试网+S i^6D{KL4R

 

c[v Z8QMQ,k0

8X5fc'w4~H0七、如何解决switch_to_frame上的横线呢?    
}.p,ZM_2Z;G01.先找到官放的文档介绍

poc6N:n&Z051Testing软件测试网:B3K5_9[$o Mt Q

51Testing软件测试网 h3kR ]#].Mg it

51Testing软件测试网 d$b8A/m#p Em i

 51Testing软件测试网 Ds5? j.OJD)pd5k

%q#{#x-aILk7a6|02.python的脚本上面划一横线,是说这个语法已经过时了(也可以继续用,只是有部分人有强迫症)。上面文档介绍说官方已经不推荐上面的写法了,用这个写法就好了driver.switch_to.frame()

7o Lc Y f051Testing软件测试网},F4x5?t7_!W

51Testing软件测试网2r{,WvY"S`
八、参考代码如下:51Testing软件测试网Q A#E#B3p:VRt

复制代码
#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()
复制代码

TAG:

 

评分:0

我来说两句

Open Toolbar