1、定位不到元素?原因分析:
- 脚本和定位方式错误
- 元素还没有加载完就开始执行
- 页面中有框架
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()
driver.get('https://mail.qq.com/')
frame_element = driver.find_element(By.XPATH, '//*[@id="login_frame"]')
driver.switch_to.frame(frame_element)
driver.find_element(By.ID, 'u').send_keys('123456')
driver.switch_to.parent_frame()
driver.find_element(By.LINK_TEXT, '基本版').click()
sleep(3)
driver.quit()