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时,还是建议直接搜索比较可靠。
web自动化:4.2selenium如何实现iframe窗口的切换(3种方法)_第1张图片

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()

你可能感兴趣的:(selenium,web,软件测试,python)