多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

浏览器不同页签之间的切换-自动化测试

更新时间:2022-06-17 09:12:47 作者:多测师 浏览:133

  一、切换页签(句柄handle)的基础用法:

  备注:部分方法为老写法,官方已经不推荐使用;点击这篇文章查看切换handle新写法。

  1.获取浏览器当前所在页签的句柄:

  current_window_handle()

  2.获取所有页面窗口的句柄

  window_handles()

  3.将定位的页面转到指定的window_name页面

  switch_to_window(window_name):

  window_name:指定页面窗口的handle

浏览器不同页签之间的切换-自动化测试

  二、关于webdriver源码展示

  @property

  def current_window_handle(self):

  """

  Returns the handle of the current window.

  :Usage:

  driver.current_window_handle

  """

  if self.w3c:

  return self.execute(Command.W3C_GET_CURRENT_WINDOW_HANDLE)['value']

  else:

  return self.execute(Command.GET_CURRENT_WINDOW_HANDLE)['value']

  @property

  def window_handles(self):

  """

  Returns the handles of all windows within the current session.

  :Usage:

  driver.window_handles

  """

  if self.w3c:

  return self.execute(Command.W3C_GET_WINDOW_HANDLES)['value']

  else:

  return self.execute(Command.GET_WINDOW_HANDLES)['value']

  def switch_to_window(self, window_name):

  """ Deprecated use driver.switch_to.window

  """

  warnings.warn("use driver.switch_to.window instead",

  DeprecationWarning, stacklevel=2)

  self._switch_to.window(window_name)

  三、实例演示

  百度贴吧的场景,如何通过切换窗口来定位其他窗口页面的元素。我们可以通过页面title的变化来判断handle是否已经切换;然后我们关闭这个新打开的页签后,需要手动切换到第一个handle,才能在第一个页面操作。

  代码演示:

  from selenium import webdriver

  from time import sleep

  # sleep方法是为了初学者能够更好地了解操作的变化

  driver = webdriver.Chrome()

  # get() 进入贴吧页面

  driver.get("https://tieba.baidu.com/")

  sleep(1)

  # 点击title为娱乐明星的标签元素

  driver.find_element_by_css_selector("a[title = '娱乐明星']").click()

  sleep(5)

  # 获取全部窗口的handle

  all = driver.window_handles

  print("所有页签handle %s" % all)

  # 获取当前窗口的handle(贴吧首页)

  now_page = driver.current_window_handle

  print("当前页面handle %s" % now_page)

  # 获取当前页面的title(当前title)

  title_first_page = driver.title

  print("切换前title %s" % title_first_page)

  # 将页面handle转到娱乐明星页面

  driver.switch_to_window(all[1])

  # 获取当前页面的title(切换handle后)

  title_next_page = driver.title

  print("切换后title %s" % title_next_page)

  # 关闭当前页签

  sleep(2)

  driver.close()

  # 必须要切换回另一个页签窗口

  driver.switch_to_window(all[0])

  print("切换回第一个页签:%s" % driver.title)

  输出结果:

  所有页签handle ['CDwindow-7FDD7BD3B5CCC6AB2F24D23BFAAEE3B3', 'CDwindow-BB6E2A7BB6B1A175947956E61DCF64BD']

  当前页面handle CDwindow-7FDD7BD3B5CCC6AB2F24D23BFAAEE3B3

  切换前title 百度贴吧——全球最大的中文社区

  切换后title 娱乐明星_百度贴吧

  切换回第一个页签:百度贴吧——全球最大的中文社区

  以上内容为大家介绍了自动化测试中的浏览器不同页签之间的切换,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部