那百度首页作为例子记录多窗口之间的跳转以及如何定位新开的窗口的句柄
#首先导入模块
from selenium import webdriver
from time import sleep
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
#记录首页的句柄
selenium_index=driver.current_window_handle
#点击百度首页的“学术”
driver.find_element_by_partial_link_text("学术").click()
sleep(3)
#虽然新打开的窗口在最前面,但是此时所有的操作仍然是在百度首页进行操作的,所以要进行下面的跳转窗口
#记录打开窗口的所有的句柄
all_handle = driver.window_handles
#通过所有窗口句柄的索引找到相对应的窗口句柄,然后给定一个值
driver.switch_to.window(all_handle[1])
selenium_xs=driver.current_window_handle
sleep(3)
#跳转到首页
driver.switch_to.window(selenium_index)
sleep(3)
#点击首页上的地图
driver.find_element_by_partial_link_text("地图").click()
sleep(3)
然后跳到刚刚打开的学术页
driver.switch_to.window(selenium_xs)
sleep(3)
driver.quit()
这里跳转多窗口容易出现的问题就是明明打开了学术页面,直接给窗口句柄定义值得时候,仍然是给百度首页定的值。
要想准确拿到学术页面的值,要先通过代码调转到学术页面窗口,哪怕浏览器展示的事学术页面窗口,但是从“driver.get("https://www.baidu.com")”开始,只是做了个click
点击的动作,实际代码并不知道获取新开的学术页面,所以要先获取到所有的句柄,然后通过索引跳转到学术页,然后才能正确的获取到这一个页的句柄。