python+selenium初級(6)—通過切換iframe定位元素
阿新 • • 發佈:2019-02-14
1.frame和iframe的區別:
frame是整個頁面的框架,iframe是內嵌的框架
Iframe標記又叫浮動幀標記,可以用它將一個HTML文件嵌入在一個HTML中顯示。它和Frame標記的最大區別是在網頁中嵌入 的<Iframe></Iframe>所包含的內容與整個頁面是一個整體,而<Frame>< /Frame>所包含的內容是一個獨立的個體,是可以獨立顯示的。另外,應用Iframe還可以在同一個頁面中多次顯示同一內容,而不必重複這段內 容的程式碼
2.使用id,name定位
注意:selenium自動聲稱的switch_to_frame被劃線,可以改為switch_to.frame#coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get('http://mail.163.com') driver.switch_to.frame('x-URS-iframe') driver.find_element_by_id('auto-id-1513149691275').send_keys('18707718538') driver.find_element_by_id('auto-id-1513149691276').send_keys('111111')
3.如果iframe沒有id或name怎麼定位?
這位元素的方法有八種,我們可以使用xpath或者tag定位
4.釋放iframe
當在iframe上操作完畢,想回到首頁上繼續操作,就必須先釋放iframe在操作
#coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get('http://mail.163.com') driver.switch_to.frame('x-URS-iframe') driver.find_element_by_id('auto-id-1513149691275').send_keys('18707718538') driver.find_element_by_id('auto-id-1513149691276').send_keys('111111') #釋放iframe driver.switch_to_default.content()
5.如何確定頁面上元素是否在iframe框架中
1.定位到元素後,切換到firepath介面
2.看firebug工具左上角,如果顯示Top Window說明沒有iframe
3.如果顯示iframe#xxx這樣的,說明在iframe上,#後面就是它的id
4.也可以檢視原始碼,看是否目標元素在iframe框架中