python+selenium自動化(四)之selenium切換窗口


當我們點擊某個鏈接時,切換換到另一個窗口,這時就需要跟隨切換到新打開的頁面,去定位元素。

1、獲取當前頁面句柄  current_window_handle

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
handle = driver.current_window_handle  #  獲取當前頁面句柄
print(handle)
driver.quit()

2、當我們點擊了某個鏈接,打開新窗口時,這時取全部窗口的句柄   window_handles

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click() # 點擊百度首頁的貼吧,新窗口
all_handles = driver.window_handles
print(all_handles)
driver.quit()

這里雖說開了新窗口,但是句柄還是在百度首頁,也就是說要在百度帖吧頁面的操作,元素的定位都是在百度首頁,這時就需要切換句柄,也就是切換到百度貼吧這個頁面。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
handle = driver.current_window_handle
print(handle)  # 百度首頁的句柄
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click()  #切換到百度貼吧頁面
all_handles = driver.window_handles
print(all_handles)  #  獲取所有窗口的句柄
now_handle = driver.current_window_handle  # 這個時候窗口已經切換到百度貼吧了,但是句柄還是百度首頁的
print(now_handle)

 3、這時,句柄切換到百度貼吧頁面 , 這里有兩個方法,老版本的是  switch_to_window ,  新版本的是   switch_to.window,(這里選擇我是用的新的,個人習慣)

 需要穿一個參數,也就是句柄參數。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
handle = driver.current_window_handle
print(handle)  # 百度首頁的句柄
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click()  #切換到百度貼吧頁面
all_handles = driver.window_handles
print(all_handles)  #  獲取所有窗口的句柄
new_handles = all_handles[-1]     # 從所有句柄的集合中,獲取最后那個,也就是最新的了
driver.switch_to.window(new_handles)   #  然后當參數傳遞進來
now_handles = driver.current_window_handle  # 查看現在的句柄
print(now_handles)
driver.quit()

查看結果,可以看到句柄已經切換到新窗口

 可以看到窗口句柄已經切換過來了,可以在新窗口操作元素了,快去試試吧。

 


免責聲明!

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



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