selenium之選項卡管理


在使用selenium管理瀏覽器的時候遇到一些小問題,現將這些小問題作一下總結:

  

(1)browser是什么?

from selenium import webdriver

browser = webdriver.Chrome()
print(browser)    # <selenium.webdriver.chrome.webdriver.WebDriver (session="7fa6e41c5d16188b2c9054a97b376ffd")>

這個browser就是一個類的實例。是什么類的實例(其實就是selenium.webdriver.chrome.webdriver.WebDriver這個路徑下類的實例),可以通過selenium包進行一步一步查看。

 

(2)在瀏覽器中再打開一個窗口

 1 from selenium import webdriver
 2 
 3 browser = webdriver.Chrome()
 4 browser.get("https://www.baidu.com")
 5 print(browser.current_window_handle)    # CDwindow-876A3769096F9B14756B8065F9D09700
 6 browser.execute_script("window.open()")
 7 print(browser.current_window_handle)    # CDwindow-876A3769096F9B14756B8065F9D09700
 8 print(browser.window_handles)   # ['CDwindow-876A3769096F9B14756B8065F9D09700', 'CDwindow-58192B86EEE5C841A366BA665975F03D']
 9 browser.switch_to.window(browser.window_handles[1])
10 print(browser.current_window_handle)    #  CDwindow-58192B86EEE5C841A366BA665975F03D
11 
12 browser.switch_to.window(browser.window_handles[0])
13 browser.close()
14 # print(browser.current_window_handle)    # selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
15 # browser.execute_script("window.open()")    # selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
16 browser.switch_to.window(browser.window_handles[0])
17 browser.execute_script("window.open()")

通過執行javascript的window.open()命令,可以打開一個新的窗口。

通過第5行和第7行執行結果可知:打開新窗口時,當前窗口句柄不會自動切換到新的窗口句柄。但是瀏覽器顯示的當前選項卡卻是新窗口!!!,如果想將當前句柄的選項卡置於最前面,執行browser.switch_to.window()再切一下就OK了。

通過第8行可知:所有的窗口句柄都保存在window_handles這個列表里面。

通過第9行命令可以切換窗口,括號里面的browser.window_handles[1]其實就是取列表中的第2個值,這個值和窗口唯一對應。

通過第13行關閉當前選項卡,這時執行第14行,報錯!說明關閉當前選項卡之后,瀏覽器不會自動切換到其它存在的窗口。

注釋第14行,打開第15行並執行,報錯!說明只有瀏覽器對象存在當前選項卡的時候,才能夠執行新建窗口操作。

通過第16行代碼,將當前選項卡切換到0,為什么是0?因為列表中之前的索引0被刪了,所以之前的1變成了0。此時執行新建窗口操作,可以正常創建。

 

(3)創建新選項卡的時候直接打開指定網址

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("https://www.baidu.com")
browser.execute_script('window.open("https://www.taobao.com")')    # 括號內的網址一樣要加引號,不然會報錯!

 


免責聲明!

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



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