一、獲取當前窗口句柄
1.元素有屬性,瀏覽器的窗口其實也有屬性的,只是你看不到,瀏覽器窗口的屬性用句柄(handle)來識別。
2.人為操作的話,可以通過眼睛看,識別不同的窗口點擊切換。但是腳本沒長眼睛,它不知道你要操作哪個窗口,這時候只能句柄來判斷了。
3.獲取當前頁面的句柄:driver.current_window_handle
二、獲取所有句柄
1.定位拉鈎網招聘產品經理,並點擊
2.點擊后,獲取當前所以的句柄:window_handles
三、切換句柄
方法一:
1.循環判斷是否與首頁句柄相等
2.如果不等,說明是新頁面的句柄
3.獲取的新頁面句柄后,可以切換到新打開的頁面上
4.打印新頁面的title,看是否切換成功
方法二:
1.直接獲取all_hand這個list數據里面第二個hand的值:all_hand[1]
四、關閉新窗口,切回主頁
1.打開新頁面后,其實只想驗證新頁面跳轉對不對,這里可以做個簡單的驗證,獲取當前頁面的title驗證
2.驗證完后切關閉新窗口
3.切回句柄到首頁
4.打印當前頁面的句柄,看是否切換到首頁了
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.lagou.com/")
#關閉切換城市
driver.find_element_by_id("cboxClose").click()
driver.implicitly_wait(10)
#獲取當前窗口的句柄
hand = driver.current_window_handle
print(hand)
#點擊產品經理打開新的標簽
driver.find_element_by_link_text("產品經理").click()
#獲取所有句柄
all_hand = driver.window_handles
print(all_hand)
#切換句柄
#判斷當前的句柄不等於首頁就切換
for item in all_hand:
if item != hand:
driver.switch_to_window(item)
print(driver.title)
#方法二,直接在list中切換
driver.switch_to_window(all_hand[1])
print(driver.title)
#關閉新窗口
driver.close()
#切換首頁
driver.switch_to_window(hand)
#打印當前的title
print(driver.title)