zoukankan      html  css  js  c++  java
  • python+selenium自动化(四)之selenium切换窗口

    当我们点击某个链接时,切换换到另一个窗口,这时就需要跟随切换到新打开的页面,去定位元素。

    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()

    查看结果,可以看到句柄已经切换到新窗口

     可以看到窗口句柄已经切换过来了,可以在新窗口操作元素了,快去试试吧。

    窈窕包包,君子好逑
  • 相关阅读:
    TCP/IP学习笔记(3)-IP、ARP、RARP协议
    TCP/IP学习笔记(2)-数据链路层
    tcp/ip学习笔记(1)-基本概念
    实体bean里面不要轻易加transient,反序列回来之后会变成null
    [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍
    [Maven实战-许晓斌]-[第三章] Mave使用入门
    [Maven实战-许晓斌]-[第二章]-2.7-2.8 Mave安装的最优建议和安装小结
    [Maven实战-许晓斌]-[第二章]-2.6 NetBeans上面安装Maven插件
    ifdown
    ifup
  • 原文地址:https://www.cnblogs.com/caibaob/p/13901750.html
Copyright © 2011-2022 走看看