一、切换页面
如果定位元素失败(抛出NoSuchElementException),调查网页源代码,发现这个元素位于一个frame或iframe标记的元素下的子网页(html标记)里,那么此时需要切换Frame。
切换方法一:使用frame或iframe标记的元素的id或name属性值来作为切换条件
switch_to.frame() 将当前定位的主体切换为frame/iframe表单的内嵌页面中
switch_to.default_content() 跳回最外层的页面
driver.switch_to.default_content()driver.switch_to.frame("MAINPAGE")driver.find_element(By.XPATH, "//*[@id='menuBottom']/div[5]/a/div").click()
二、切换窗口
页面是存在多窗口的,但是selenium默认焦点只会在主窗口上的所有元素,不切换窗口,就不能操作除主窗口以外的窗口内元素。
每个窗口都有唯一的一个句柄值,那么我们就可以通过句柄值来完成窗口的切换操作
方法:
1)、driver.current_window_handle (获取当前的句柄值)
2)、driver.window_handles ( 获取当前由driver启动所有窗口句柄)
3)、driver.switch_to.window(handle) —> 切换窗口
from selenium import webdriverdriver = webdriver.Chrome()driver.get('file:///D:/%E6%A1%8C%E9%9D%A2/page/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html')driver.find_element_by_id('ZCB').click()# 1).切换窗口操作,driver.window_handles 获取driver启动的所有窗口句柄handles = driver.window_handles# 2).切换窗口工作driver.switch_to.window(handles[-1])driver.find_element_by_id('userB').send_keys('admin9')driver.quit()