selenium之Frame操作

frame介绍

 

 

frame切换方法

说明:在Selenium中封装了如何切换frame框架的方法

方法:
1). driver.switch_to.frame(frame_reference) --> 切换到指定frame的方法
frame_reference:可以为frame框架的name、id或者定位到的frame元素

2). driver.switch_to.default_content() --> 恢复默认页面方法

在frame中操作其他页面,必须先回到默认页面,才能进一步操作


补充

Frame标签有Frameset,Frame和iFrame三种。Frameset可以直接按照正常元素定位。Frame和iFrame的定位方法相同,需要把驱动切换到Frame内再进行操作。
切换方法:
1:通过frame的id属性:driver.switch_to.frame(‘id属性’)
2:通过frame的name属性:driver.switch_to.frame(‘name属性’)
3:通过index来定位:driver.switch_to.frame(0) 其中0表示第一个iframe

示例:

登录QQ邮箱。QQ邮箱登录,其用户名密码等嵌套在iFrame内,其iFrame的id属性值为“login_frame”,因此需要先进行切换。

 

 

# coding = utf-8

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

d = webdriver.Chrome()
# 设置浏览器窗口最大化
d.maximize_window()
# 打开QQ邮箱登录页面
d.get('https://mail.qq.com/')
# 切换iframe
d.switch_to.frame('login_frame')
# 输入qq号
d.find_element(By.ID, 'u').send_keys('1234567')
# 输入密码
d.find_element(By.ID, 'p').send_keys('7654321')
# 点击登录
d.find_element(By.ID, 'login_button').click()
# 强制等等2秒查看效果
sleep(2)
# 关闭浏览器
d.quit()

注意:上面的代码已经切换到Frame内部,此时只能对Frame内部元素进行操作,若要对Frame之外的元素进行操作,则需要切换出去,切换方法如下:driver.switch_to.default_content()

 

posted @ 2022-08-17 10:59  云long  阅读(237)  评论(0编辑  收藏  举报