如果定位不到元素,先檢視是不是iframe表單,如果是先切換到iframe表單
importtime
from selenium import
webdriver
#要想呼叫鍵盤按鍵操作需要引入keys包
from selenium.webdriver.common.keys import
keys
#from selenium.webdriver.commom.by import by
from selenium.webdriver.common.action_chains import
actionchains
defswich_frame():
browser =webdriver.firefox()
#切換到表單 iframe(id='if')
browser.switch_to.frame('if'
)
#接下來就操作正常的元素了
browser.find_element_by_css_selector("
#kw").send_keys(u'
易烊千璽')
browser.find_element_by_id("su
").click()
switch_to.frame()預設可以直接取表單的id或者 name屬性。如果ifram 沒有可用的id 和name 屬性,則可以通過下面的方法定位
defswich_frame():
browser =webdriver.firefox()
#先通過xpath 定位到iframe
xf=browser.find_element_by_xpath('
//*[@class="if"]')
#再將定位物件傳給switch_to.frame()方法
browser.switch_to.frame(xf)
browser.switch_to.parent_frame()
switch_to.parent_frame()跳出當前一級表單,該方法預設對應於離它最近的switch_to.frame()方法,除此之外,在進入多級表單的情況下,還可以通過switch_to.default_content()跳回最外層的頁面有些web頁面開啟後,會重新開啟乙個新的視窗,如果想要在新的視窗上操作,就得先切換視窗。獲取視窗的唯一標識用控制代碼表示,所以只要切換控制代碼,就可以在多個頁面上操作
driver.current_window_handle :獲取當前視窗控制代碼
driver.window_handles :返回所有視窗的控制代碼
driver.switch_to.window() :用於切換到相應的視窗
defswitch_window():
browser =webdriver.firefox()
browser.implicitly_wait(5)
browser.get(
"")# search_window=browser.current_window_handle
browser.find_element_by_link_text(u"登入
").click()
browser.find_element_by_link_text(u
'立即註冊
').click()
#獲得當前所有開啟視窗的控制代碼
all_handles=browser.window_handles
#進入註冊視窗
for handle in
all_handles:
if handle!=search_window:
browser.switch_to.window(handle)
browser.implicitly_wait(10)
browser.find_element_by_name(
"phone
").send_keys('
username')
browser.find_element_by_css_selector(
'#tangram__psp_4__password
').send_keys('
1234456tang')
time.sleep(3)
#回到搜尋視窗
for handle in
all_handles:
if handle==search_window:
browser.switch_to.window(handle)
browser.implicitly_wait(10)
browser.find_element_by_id('kw
').send_keys('
test')
browser.find_element_by_id('su
').click()
time.sleep(2)
browser.quit()
frame表單切換 多視窗切換
說明 在webdriver類庫中封裝了html頁面中使用frame表單框架技術定位的方法 方法 1 driver.switch to.frame myframe1 切換表單方法 myframe1 為frame表單的name或id 2 driver.switch to.default content ...
selenium多視窗切換
在編寫自動化用例時,偶爾會有兩個以上的開啟視窗,那麼就來看看下面的多視窗切換吧!多視窗切換 now handle driver.current window handle 獲取當前視窗控制代碼 all handle driver.window handles 獲取所有視窗控制代碼 for handl...
selenium多視窗切換
有時候需要在不同的視窗切換,從而操作不同的視窗上的元素。在 selenium1.0 中這個問題比較難處理。但 webdriver 提供了switch to window 方法可以切換到任意的視窗。driver.find element by link text u 登入 click driver.f...