selenium webdriver (6) -- iFrame

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

相關文章
相關標籤/搜索