1. 程式人生 > >python+selenium初級(6)—通過切換iframe定位元素

python+selenium初級(6)—通過切換iframe定位元素

1.frame和iframe的區別:

frame是整個頁面的框架,iframe是內嵌的框架

Iframe標記又叫浮動幀標記,可以用它將一個HTML文件嵌入在一個HTML中顯示。它和Frame標記的最大區別是在網頁中嵌入 的<Iframe></Iframe>所包含的內容與整個頁面是一個整體,而<Frame>< /Frame>所包含的內容是一個獨立的個體,是可以獨立顯示的。另外,應用Iframe還可以在同一個頁面中多次顯示同一內容,而不必重複這段內 容的程式碼

2.使用id,name定位

#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')
注意:selenium自動聲稱的switch_to_frame被劃線,可以改為switch_to.frame
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框架中