selenium提供了frame切換,但不像窗口,提供句柄,固然爲了可以切換,它提供了就不是一個函數python
driver.switch_to_frame("frameName") #切換到frameName裏能夠是name, locator,id driver.switch_to_frame("frameName.0.child") driver.switch_to_default_contents() #切換出當前frame
咱們常常定位不到元素,明明能夠看到,卻定位不到,大多跟frame有關,如登陸163郵箱頁面web
from selenium import webdriver import time driver = webdriver.Firefox() driver.get('http://mail.163.com') print 'Before login-------------------------------------' #print current page title title = driver.title print title now_url = driver.current_url print now_url driver.switch_to_frame("x-URS-iframe") #很是容易遺忘這個frame driver.find_element_by_name("email").clear() driver.find_element_by_name("email").send_keys("XXXX") driver.find_element_by_name("password").clear() driver.find_element_by_name("password").send_keys("XXXXXX") driver.find_element_by_id("dologin").click() time.sleep(10) print 'After login --------------------------------------' # print title again title = driver.title print title #print url again now_url = driver.current_url print now_url #print login user user = driver.find_element_by_id("spnUid").text print user driver.close()
同時咱們還會遇到這麼一個場景,一個頁面由兩塊組成,一側是sidebar-frame, 另外一側是content-frame,此時你須要先定位一個元素在sidebar-frame中,隨後你又要定位到另外一個content-frame中的元素,這時你不能直接定位,而須要先切換出以前進入的frame再進入到所要定位元素的frame,再定位元素ide
driver.switch_to_frame("sidebar_frame") driver.find_element_by_id("network") driver.switch_to_default_contents() driver.switch_to_frame("content_frame") driver.find_element_by_id("interface")
參考:函數
《Selenium2自動化測試實戰》測試
《selenium python buildings release 2》ui