在使用selenium管理瀏覽器的時候遇到一些小問題,現將這些小問題做一下總結:javascript
(1)browser是什麼?java
from selenium import webdriver browser = webdriver.Chrome() print(browser) # <selenium.webdriver.chrome.webdriver.WebDriver (session="7fa6e41c5d16188b2c9054a97b376ffd")>
這個browser就是一個類的實例。是什麼類的實例(其實就是selenium.webdriver.chrome.webdriver.WebDriver這個路徑下類的實例),能夠經過selenium包進行一步一步查看。web
(2)在瀏覽器中再打開一個窗口chrome
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了。session
經過第8行可知:全部的窗口句柄都保存在window_handles這個列表裏面。spa
經過第9行命令能夠切換窗口,括號裏面的browser.window_handles[1]其實就是取列表中的第2個值,這個值和窗口惟一對應。code
經過第13行關閉當前選項卡,這時執行第14行,報錯!說明關閉當前選項卡以後,瀏覽器不會自動切換到其它存在的窗口。對象
註釋第14行,打開第15行並執行,報錯!說明只有瀏覽器對象存在當前選項卡的時候,纔可以執行新建窗口操做。blog
經過第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")') # 括號內的網址同樣要加引號,否則會報錯!