多窗口切换

在页面操作过程中,有时单击某个链接会弹出新的窗口,这时就需要切换到新打开的
窗口中进行操作。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)切换到账号注册页。

 

posted @ 2020-10-31 13:29  Catonce  阅读(58)  评论(0)    收藏  举报