selenium3+python-多窗口、句柄(handle)


一、獲取當前窗口句柄

    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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM