selenium之选项卡管理

在使用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")')    # 括号内的网址同样要加引号,否则会报错!
相关文章
相关标签/搜索