【Python自动化测试】:frame和iframe框架的切换

1、定位不到元素?原因分析:

  1. 脚本和定位方式错误
  2. 元素还没有加载完就开始执行
  3. 页面中有框架

2、从外部页面切换到frame框架中

  • 语法:switch_to.frame()
  • 在switch_to.frame()方法中传入不同的参数即可实现切换frame。

2.1方式一:通过frame的index参数切换

  • 语法:switch_to.frame(index值)
  • 查看该frame是在当前整个页面的第几个,index的值从0开始。

2.2 方式二:通过frame的id属性切换

  • 语法:switch_to.frame('id属性值')

2.3 方式三:通过frame的name属性切换

  • 语法:switch_to.frame('id属性值')

2.4 方式二:通过定位frame的元素切换

  • 语法:switch_to.frame(frame_element)
  • 在调用switch_to.frame(frame_element)方法前,需要先用元素定位方法定位到frame中的元素frame_element = driver.find_element()

3、切换回主文档

  • 语法:driver.switch_to.default_content()

4、切换到上一层(父级)页面

  • 语法:driver.switch_to.parent_frame()

5、代码示例

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

# 定义谷歌浏览器对象
driver = webdriver.Chrome()
# 打开要操作的网页:QQ邮箱登陆页面
driver.get('https://mail.qq.com/')

# 切换到账号密码输入框框架
# 方式一:通过frame的索引index切换
# driver.switch_to.frame(1)
# 方式二:通过frame的ID属性切换 switch_to.frame('id属性值')
# driver.switch_to.frame('login_frame')
# 方式三:通过frame的name属性切换 switch_to.frame('name属性值')
# driver.switch_to.frame('login_frame')
# 方式四:通过frame的元素对象切换  driver.switch_to.frame(frame_element)
# 先对要切换框架中的元素进行定位:八种定位方式
frame_element = driver.find_element(By.XPATH, '//*[@id="login_frame"]')
# 然后根据frame中的元素进行切换
driver.switch_to.frame(frame_element)

# 定位到账号输入框,并输入账号“123456”
driver.find_element(By.ID, 'u').send_keys('123456')

# 定位到主文档的“基本版”链接,并点击
# driver.switch_to.default_content()
# driver.find_element(By.LINK_TEXT, '基本版').click()

# 返回父级框架,定位到父级框架的“基本版”链接,并点击
driver.switch_to.parent_frame()
driver.find_element(By.LINK_TEXT, '基本版').click()

# 页面停留3秒钟
sleep(3)
# 关闭浏览器
driver.quit()

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值