python+selenium自动化之selenium切换窗口

发表于:2020-11-05 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:菜菜_包包    来源:博客园

  当我们点击某个链接时,切换换到另一个窗口,这时就需要跟随切换到新打开的页面,去定位元素。
  1、获取当前页面句柄  current_window_handle
  import time
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get("http://www.baidu.com")
  driver.maximize_window()
  handle = driver.current_window_handle  #  获取当前页面句柄
  print(handle)
  driver.quit()
  2、当我们点击了某个链接,打开新窗口时,这时取全部窗口的句柄   window_handles
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get("http://www.baidu.com")
  driver.maximize_window()
  driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click() # 点击百度首页的贴吧,新窗口
  all_handles = driver.window_handles
  print(all_handles)
  driver.quit()
  这里虽说开了新窗口,但是句柄还是在百度首页,也就是说要在百度帖吧页面的操作,元素的定位都是在百度首页,这时就需要切换句柄,也就是切换到百度贴吧这个页面。
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get("http://www.baidu.com")
  driver.maximize_window()
  handle = driver.current_window_handle
  print(handle)  # 百度首页的句柄
  driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click()  #切换到百度贴吧页面
  all_handles = driver.window_handles
  print(all_handles)  #  获取所有窗口的句柄
  now_handle = driver.current_window_handle  # 这个时候窗口已经切换到百度贴吧了,但是句柄还是百度首页的
  print(now_handle)
   3、这时,句柄切换到百度贴吧页面 , 这里有两个方法,老版本的是  switch_to_window ,  新版本的是   switch_to.window,(这里选择我是用的新的,个人习惯)
  需要穿一个参数,也就是句柄参数。
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get("http://www.baidu.com")
  driver.maximize_window()
  handle = driver.current_window_handle
  print(handle)  # 百度首页的句柄
  driver.find_element_by_xpath('//*[@id="s-top-left"]/a[5]').click()  #切换到百度贴吧页面
  all_handles = driver.window_handles
  print(all_handles)  #  获取所有窗口的句柄
  new_handles = all_handles[-1]     # 从所有句柄的集合中,获取最后那个,也就是最新的了
  driver.switch_to.window(new_handles)   #  然后当参数传递进来
  now_handles = driver.current_window_handle  # 查看现在的句柄
  print(now_handles)
  driver.quit()
  查看结果,可以看到句柄已经切换到新窗口:
  可以看到窗口句柄已经切换过来了,可以在新窗口操作元素了,快去试试吧。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号