什么是iframe?
iframe是HTML標簽,作用是文檔中的文檔(即在當前 HTML 文檔中嵌入另一個HTML文檔),或者浮動的框架(FRAME)。iframe元素會創建包含另外一個文檔的內聯框架(即行內框架)。
iframe框架內元素定位
selenium中定位iframe內元素,需先切換到iframe框架內,然后再進行元素定位,否則會報錯找不到元素。
一、iframe常用切換
driver.switch_to_frame(iframe_element) # 切換至iframe driver.switch_to.default_content() # 切回主頁面 driver.switch_to_parent_frame() # 切回上級iframe
二、iframe常見場景
1,僅一個iframe框架
切換至iframe-->定位iframe內元素-->切回首頁-->定位目標元素
2,存在多個iframe框架
切換至iframe1-->定位iframe1內元素-->切回首頁-->切換至iframe2-->定位iframe2內元素-->切回首頁-->定位目標元素
3,iframe框架內嵌另一iframe框架
切換至iframe1-->切換至iframe2-->定位iframe2內元素-->切回首頁-->定位目標元素
三、實例
網易郵箱登錄,賬號密碼輸入框元素在iframe內,故模擬網易郵箱登錄如下:
1 # 模擬網易郵箱登錄 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get("https://email.163.com/") # 進入網易郵箱首頁 7 sleep(3) 8 9 iframe_ele = driver.find_element_by_tag_name("iframe") # 獲取ifarme元素 10 driver.switch_to.frame(iframe_ele) # 切換到iframe框架 11 driver.find_element_by_name("email").send_keys("AutoTest") # 輸入郵箱 12 driver.find_element_by_name("password").send_keys("123456") # 輸入密碼 13 driver.find_element_by_id("dologin").click() # 點擊登錄