iframe是html一种常用技术,在一个页面中嵌套另一个页面。selenium默认访问不了frame中的内容,这时需要进行切换。
目录
本文以网站为例。
一.问题出现
按逻辑编写代码
"""iframe框架切换"""
from selenium import webdriver
url = 'https://qzone.qq.com/'
# 创建浏览器对象
driver = webdriver.Chrome()
driver.get(url)
# 登录
login = driver.find_element_by_id('switcher_plogin').click()
# 账号
accountText = driver.find_element_by_id('u').click()
# 密码
accounntPasswd = driver.find_element_by_id('p').click()
# 登录按钮
loginButton = driver.find_element_by_id('login_button').click()
运行报错
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="switcher_plogin"]"}
二.切换iframe框架的方法
2.1 根据id切换
# 切换iframe框架
driver.switch_to.frame('login_frame')
执行成功,成功跳转。
2.2 根据xpath切换
# 切换iframe框架
el_path = driver.find_element_by_xpath('//*[@id="login_frame"]')
driver.switch_to.frame(el_path)
执行结果同上。