十一.python+selenium之iframe(内嵌)框架切换

iframe属于内嵌框架,从HTML中可以看出是否有内嵌框架的使用。

一般网页存在内嵌框架的话,在HTML中会有iframe的标签存在,而这种iframe标签用Firefox来定位时比较容易查看到。

例如QQ邮箱登录页面。在插件的辅助下,可以很快的看得到它是属于iframe框架的。

那么若需要对这个iframe内嵌框架进行操作的话,必须通过切换框架来实现元素的定位,否则,在Top_window的框架里是没办法定位到内嵌框架里的元素属性。

使用切换框架的一般通过id和name来进行切换。

切换的格式为:网页对象名.switch_to_frame('id的属性值')

                         网页对象名.switch_to_frame(‘name的属性值’)

切换出默认框架格式: 网页对象名.switch_to_default_content()

快速找到iframe框架属性id和name的方法,可以通过xpath调试,在火狐浏览器的xpath下输入 .//iframe

以下为脚本示例:(可以尝试不去切换进内嵌框架直接定位元素操作)

#coding:utf-8
from selenium import webdriver
from time import *

bro=webdriver.Firefox()
bro.maximize_window()
bro.get("https://mail.qq.com")
sleep(1)
#使用框架切换一般使用两种属性进行切换,分别为id,name
'''
使用语法:网页对象名.switch_to_frame('id')
          网页对象名.switch_to_frame('name')
切换出默认框架使用语法: 网页对象名.switch_to_default_content()
'''
bro.switch_to_frame('login_frame')#切换到内嵌的框架
bro.find_element_by_id('u').send_keys('11238')#输入QQ账号
sleep(1)
bro.find_element_by_id('p').send_keys('123')#输入QQ密码
bro.find_element_by_id('login_button').click()#点击登录
bro.switch_to_default_content()#切换出默认框架
bro.find_element_by_link_text('基本版').click() #点击基本版
sleep(2)
bro.quit()

猜你喜欢

转载自blog.csdn.net/Static_at/article/details/81116581