一、多表單的切換
frame:HTML頁面中的一中框架,主要作用是在當前頁面中指定區域顯示另一頁面元素;
(HTML語言中,frame/iframe標簽為表單框架)
- 在web應用中會遇到frame或者iframe表單嵌套頁面的應用,對於表單內嵌頁面上的元素無法直接進行定位
- 通過driver.switch_to.frame("id|name")方法將當前定位的主體切換為frame或iframe表單的內嵌頁面中
- 恢復默認頁面方法:driver.switch_to.default_content()
- 以126郵箱登錄功能為例,代碼如下
-
from selenium import webdriver import time from webdriver.common.action_chains import ActionChains driver=webdriver.Firefox() driver.get("https://mail.126.com/") driver.maximize_window() driver.find_element_by_id("switchAccountLogin").click() time.sleep(1) #定位當內嵌表單中 driver.switch_to.frame("")#因id是動態的,通過name進行定位 driver.find_element_by_name("email").send_keys(13212345678) time.sleep(1) driver.find_element_by_name("password").send_keys(12345678) time.sleep(1) #恢復到默認頁面 driver.switch_to.default_content() driver.quit()
#以麥子學院為例: from selenium import webdriver import time driver=webdriver.Firefox() driver.get("http://www.maiziedu.com/") time.sleep(10) driver.switch_to.frame("chatIframe")#進入嵌套表單頁面 driver.find_element_by_xpath('//*[@id="chat-close"]').click() driver.switch_to.default_content()#恢復到默認頁面 time.sleep(2) driver.find_element_by_link_text('登錄').click() driver.find_element_by_id('id_account_l').send_keys("1234qw3486029") driver.find_element_by_id('id_password_l').send_keys(12345) driver.find_element_by_id('login_btn').click() time.sleep(2) driver.quit()
二、多窗口切換
說明:在HTML頁面中,經常有a標簽也就是超鏈接,這些鏈接在執行時,有的會在新的窗口的打開鏈接
1、多窗口切換
說明:在WebDriver中的封裝了獲取當前窗口句柄方法和獲取所有窗口句柄的方法以及切換指定句柄窗口的方法
(句柄:窗口的唯一開標識碼)
2、方法:
(1)driver.current_window_handle 獲取當前窗口句柄
(2)driver.window_handles 獲取所有窗口句柄
(3)driver.switch_to.window(handle) 切換指定句柄窗口
(4)driver.close() 關閉當前的句柄
(5)driver.quit() 關閉瀏覽器
from selenium import webdriver import time driver=webdriver.Firefox() #進入百度首頁-搜索麥子學院 driver.get('https://www.baidu.com') time.sleep(2) driver.find_element_by_id('kw').send_keys('麥子學院') driver.find_element_by_id('su').click() time.sleep(2) #搜索麥子學院首頁 driver.find_element_by_partial_link_text('專業IT職業教育平台').click() time.sleep(2) #跳轉到百度引擎頁面 driver.switch_to.window(driver.window_handles[0])#獲取窗口的句柄,並跳轉到第一個句柄 time.sleep(2) #跳轉回麥子學院首頁 driver.switch_to.window(driver.window_handles[1])#跳轉回麥子學院首頁 time.sleep(2) #關閉麥子學院首頁句柄 driver.close() time.sleep(2) #退出瀏覽器 driver.quit()
