在一些網頁中經常會看到ifrmae/frame標簽,iframe是嵌入式框架一般用來在已有的頁面中嵌入另一個頁面,當一個元素在iframe里時我們應該先切換到iframe里面。
一、API語法
1.進入iframe
iframe = self.driver.find_element_by_xpath("//iframe[contains(@src,'https://wap.cmread.com/sso/auth?e_p=1&response_type=token')]")
self.driver.switch_to.frame(iframe)
2.釋放/退出iframe
driver.switch_to_default_content()
二、代碼實例
以咪咕閱讀網站登錄界面來實踐iframe的切換,我們直接進入登錄界面進行操作網址為http://www.cmread.com/u/tologin.do?preUrl=http%3A%2F%2Fwww.cmread.com%2Fu%2Findex
以下為HTML代碼結構:
代碼如下:
#author:命命 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("http://www.cmread.com/u/tologin.do?preUrl=http%3A%2F%2Fwww.cmread.com%2Fu%2Findex") #通過contains函數,提取匹配特定文本的所有元素 frame = driver.find_element_by_xpath("//iframe[contains(@src,'https://wap.cmread.com/sso/auth?e_p=1&response_type=token')]") #進入iframe頁面 driver.switch_to.frame(frame) #清除賬號輸入框並輸入賬號 driver.find_element_by_id("unameInput").clear() driver.find_element_by_id("unameInput").send_keys("輸入自己的用戶名") #清除密碼輸入框並輸入密碼 driver.find_element_by_id("pwdInput").clear() driver.find_element_by_id("pwdInput").send_keys("輸入自己的密碼") #點擊登錄按鈕 driver.find_element_by_css_selector("input[name = 'login']").click() #獲取登錄成功頁面的用戶名 success = driver.find_element_by_css_selector("span[title = '好的好的d']").text print(success) driver.quit()
運行結果: