一般情況下,我們可以直接通過id或者name切換到frame。
driver.switch_to.frame()
小括號里面填iframe標簽的id,或name值
如果沒有id,或者name,我們可以先定位到iframe標簽,再切換到frame
# 根據標簽名切換
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
當然我們也可以通過其他頁面元素定位的方式。
頁面元素定位的8種方式:
- find_element_by_id
- find_element_by_name
- find_element_by_xpath
- find_element_by_link_text
- find_element_by_partial_link_text
- find_element_by_tag_name
- find_element_by_class_name
- find_element_by_css_selector
接下來通過兩個具體的實例了解下driver.switch_to.frame()
1、模擬登陸163郵箱
# coding:utf-8 from selenium import webdriver # 實例化 driver = webdriver.Chrome() # 發起請求 driver.get("http://mail.163.com/") # 隱式等待10s driver.implicitly_wait(10) # 切換iframe # 根據標簽名切換 iframe = driver.find_element_by_tag_name("iframe") driver.switch_to.frame(iframe) # 定位元素並向input標簽里輸入值 driver.find_element_by_name("email").send_keys("***") # 輸入賬號 driver.find_element_by_name("password").send_keys("***") # 輸入密碼 # 點擊登陸 # driver.find_element_by_id("dologin").click() # 釋放iframe,重新回到主頁面 driver.switch_to.default_content()
2、模擬登陸豆瓣
from selenium import webdriver # 實例化 driver = webdriver.Chrome() # 發起請求 driver.get("https://www.douban.com") # 切換frame iframe = driver.find_element_by_tag_name("iframe") driver.switch_to.frame(iframe) # 定位元素 driver.find_element_by_class_name("account-tab-account").click() driver.find_element_by_id("username").send_keys("***") # 輸入用戶名 driver.find_element_by_id("password").send_keys("***") # 輸入密碼 # 點擊登陸豆瓣 # driver.find_element_by_link_text('登陸豆瓣') driver.find_element_by_class_name("btn").click() # driver.quit()
