web自动化:4.2selenium如何实现iframe窗口的切换(3种方法)

web自动化测试,如果要定位的元素在iframe内,无法避免iframe窗口切换的问题。

1、iframe

页面内嵌窗口(html内嵌套html。多窗口就是有多个html文件,所以iframe也要窗口切换)

2、 切到 iframe 页面的常用方法

方法1:索引,适用于只有一个iframe的情况

  driver.switch_to.frame(0)   

方法2:name属性

  driver.switch_to.frame("iframe的name属性")

方法3:webElement对象
即:先找到要切换的 iframe 元素,
再通过 driver.switch_to.frame(iframe_el) 切换窗体

3、如何判断当前页面有几个iframe

我自己踩过的坑,偷懒直接看层级以为只有一个iframe,然后用了索引来切换窗口,结果一直定位“帐号密码登录”元素失败。
后面搜索了下,发现原来有4个。所以,不确定有几个iframe时,还是建议直接搜索比较可靠。
在这里插入图片描述

4、实战练习

以上图为例,不能使用索引,又没有name属性,只能使用方法3切换窗体

from selenium import webdriver

driver = webdriver.Chrome()     # 初始化一个浏览器
driver.implicitly_wait(10)      # 设置隐性等待
driver.maximize_window()        # 浏览器窗口最大化

# 1、进入网页
url = 'https://ke.qq.com/'
driver.get(url)      # 打开一个网页

# 2、主页面,点击“登录”按钮
el = driver.find_element('xpath', '//div/a[@id="js_login"]')
el.click()

# 3、切换到 iframe 
iframe = driver.find_element('xpath', '//div/div/iframe')
driver.switch_to.frame(iframe)
# 4、点击“账号密码登录”
el = driver.find_element('xpath', '//a[text()="帐号密码登录"]')
el.click()
  • 10
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值