多窗口切换
在页面操作过程中,有时单击某个链接会弹出新的窗口,这时就需要切换到新打开的
窗口中进行操作。WebDriver 提供的switch_to.window()方法可以实现在不同的窗口间切换。
current_window_handle:获得当前窗口句柄。
window_handles:返回所有窗口的句柄到当前会话。switch_to.window():切换到相应的窗口。

import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver-get( "http://www .baidu.com")
#获得百度搜索窗口句柄
search_windows = driver.current_window_handle
driver.find element by link text(·登录').click()
driver.find element by link text("立即注册").click()
#获得当前所有打开的窗口句柄
all handles = driver.window_handles
#进入注册窗口
for handle in all_handles:
if handle !=search_windows:
driver.switch_to.window(handle)print (driver.title)
driver.find element by name ("userName") .send keys ('username ')
driver.find element by name ( 'ohone ') .send keys ( '138×XxxxxZ')
time.sleep (2)#
#关闭当前窗口driver.close()
#回到搜索窗口
driver.switch_to.window(search_windows)print (driver.title)
driver.quit()
脚本的执行过程:首先打开百度首页,通过current_window_handle获得当前窗口句柄,并赋值给变量 search_handle。接着打开登录弹窗,在登录弹窗土单击“立即注册”链接,从而打开新的注册窗口。通过window_handles 获得当前所有窗口句柄(包含百度首页和账 号注册页),并赋值给变量all_handles。
循环遍历all_handles,如果 handle不等于search_handle,那么一定是注册窗口,因为在脚本执行过程中只打开了两个窗口。然后,通过switch_to.window)切换到账号注册页。

浙公网安备 33010602011771号