一、切換頁面
如果定位元素失敗(拋出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 webdriver
driver = 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()