python selenium-webdriver 标签页切换(十五)

  测试过程中有时候会遇到点击某个按钮或者链接会弹出新的窗口,这时候我们的操作的页面还保持着最初打开页面,但是此时我们需要操作新打开的页面上的功能,这个时候我们需要切换一下标签页 。

  其实页面的切换与frame的切换比较相识,一种切换时本页面内frame的操作,而标签页面是多页面的操作,道理很相似。下面讲解下操作页面标签会涉及到那些方法。

 

  • driver.current_window_handle                         #获取当前窗口的句柄
  • driver.window_handles                                    #获取所有窗口句柄
  • driver.switch_to_window(windowName)               #切换窗口的句柄

 

   窗口的切换比较容易,所以我们通过代码详细了解下页面如何切换

import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys(u'梦雨情殇')  #搜索“梦雨情殇的博客”
now_handle = driver.current_window_handle   #获取当前窗口的句柄
print(now_handle)  #打印当前窗口的句柄
print(driver.title)  #获取打开页面的标题
driver.find_element_by_id('su').click() 
time.sleep(2)
driver.find_element_by_xpath('//*[@id="1"]/h3/a').click()  #点击第一条查询的数据
all_handles = driver.window_handles   #获取到当前所有的句柄,所有的句柄存放在列表当中
print(all_handles)  #打印句柄
'''获取非最初打开页面的句柄'''
for handles in all_handles:
    if now_handle != handles:
        driver.switch_to_window(handles)
print(driver.title)  #获取切换后的标题
time.sleep(3)
driver.quit()

效果:

从例子中我们看到无论我们打开几个页面,但是默认的句柄依然保持在最初打开的页面,如果想要操作后面的页面的时候我们首先需要获取到当前所有的打开页面的句柄,然后在遍历选择你需要的句柄,打开标签页顺序也就是列表存放的index顺序,然后我们按照索引选择,最后在切换到对应的页面。最重要的是操作完成对应的页面一定要切换回最初的标签页,然后通过最初的页面进行切换,这边避免最后自己也不知道在操作那个页面,这个是自己的一点的经验吧。

posted on 2017-08-31 17:03  梦雨情殇  阅读(9458)  评论(0编辑  收藏  举报

导航