zoukankan      html  css  js  c++  java
  • 多测师讲解selenium ——切换窗口——打印句柄_高级讲师肖sir

    (一)同一个窗口打开两个浏览器

     

    from selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome()
    url='http://www.baidu.com' #打开百度
    drvier.get(url)
    drvier.maximize_window()
    sleep(2) #线程等待2秒
    url='http://www.jd.com'
    drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)


    二、两个url打开两个窗口

    from selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome()
    url='http://www.baidu.com' #打开百度
    drvier.get(url)
    drvier.maximize_window()
    js ='window.open("http://www.jd.com")'
    drvier.execute_script(js)

    三、打印title

     结果:百度一下,你就知道


    from selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome()
    url='http://www.baidu.com' #打开百度
    drvier.get(url)
    drvier.maximize_window()
    # sleep(2) #线程等待2秒
    # url='http://www.jd.com'
    # drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)
    # drvier.maximize_window()
    js ='window.open("http://www.jd.com")'
    drvier.execute_script(js)
    # #新开一个窗口
    sleep(2)
    title =drvier.title#获取到当前的窗口文本标题
    print(title)#打印标题 百度一下,你就知道
    (四)切换当前窗口定位

    from selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome()
    url='http://www.baidu.com' #打开百度
    drvier.get(url)
    drvier.maximize_window()
    # sleep(2) #线程等待2秒
    # url='http://www.jd.com'
    # drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)
    # drvier.maximize_window()
    js ='window.open("http://www.jd.com")'
    drvier.execute_script(js)
    # #新开一个窗口
    # sleep(2)
    # title =drvier.title#获取到当前的窗口文本标题
    # #print(title)#打印标题 百度一下,你就知道
    # sleep(2)
    drvier.find_element_by_id('key').send_keys('手机')
    cl =drvier.find_element_by_css_selector('[class=text]')
    cl.send_keys('手机')
    xp=drvier.find_element_by_xpath('//*[@id="key"]').send_keys('手机')
    #以上我们是定位不到内容,索引我们要切换窗口
    五、切换句柄
    简化版:

    from selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome() #创建一个对象
    url='http://www.baidu.com'
    drvier.get(url) #打开百度
    drvier.maximize_window() #创建最大化
    sleep(2)
    js ='window.open("http://www.jd.com")'
    drvier.execute_script(js) #新开窗口打开jd
    sleep(1)
    headles =drvier.window_handles #获取所有窗口的句柄
    drvier.switch_to.window(headles[-1])
    # 通过 switch_to以句柄索引值为-1来切换-1的窗口
    title1=drvier.title#获取标题
    print(title1) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
    sleep(2)
    drvier.find_element_by_id('key').send_keys('手机')
    讲解版:

    rom selenium import webdriver
    from time import sleep
    drvier=webdriver.Chrome() #创建一个对象
    url='http://www.baidu.com'
    drvier.get(url) #打开百度
    drvier.maximize_window() #创建最大化
    sleep(2)
    js ='window.open("http://www.jd.com")'
    drvier.execute_script(js) #新开窗口打开jd
    sleep(1)
    #tile =drvier.title #获取当前窗口的标题
    #print(tile) #当前的title:百度一下,你就知道
    # # 获取当前窗口的句柄和获取所有窗口的句柄和切换窗口
    #j =drvier.current_window_handle #获取当前窗口的句柄
    #print(j) #CDwindow-49F4482A3D1C0713E1A63696416AF8EE
    headles =drvier.window_handles #获取所有窗口的句柄
    #print(headles)
    # # ['CDwindow-3B7E08122DE1340AB96EF0676CB5C6B0',
    # # 'CDwindow-24A5FFE06B543E9B63C3F011041E4309']
    # '''如当前的窗口超过了2个则句柄对应的窗口会发生相对应的改变(索引位置)'''
    # # 通过句柄来切换窗口
    drvier.switch_to.window(headles[-1])
    # 通过 switch_to以句柄索引值为-1来切换-1的窗口
    title1=drvier.title#获取标题
    print(title1) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
    sleep(2)
    drvier.find_element_by_id('key').send_keys('手机')

     5、2

    切换句柄练习题

     1、先将所讲的内容进行复习
    # 2、自己开三个窗口或者更多,
    # 然后通过句柄的方式实现切换(理解句柄的索引改变问题)
    # 3、完成以上事项的同学:
    # 1、打开百度
    # 2、打开京东
    # 3、获取当前句柄
    # 4、获取所有的句柄
    # 5、通过for循环遍历来实现且到京东窗口且打印title
    # '''
    from selenium import webdriver
    from time import sleep
    driver=webdriver.Chrome()
    url='http://www.baidu.com'
    driver.get(url) #打开百度
    driver.maximize_window()#窗口最大化
    sleep(2)#线程等待2秒
    #打开京东
    jd='window.open("http://www.jd.com")'
    driver.execute_script(jd)
    sleep(2) #线程等待
    dcs='window.open("http://gz.duoceshi.cn")'
    driver.execute_script(dcs)
    sleep(2) #线程等待
    # title=driver.title #获取当前窗口的标题
    # print(title) #百度的标题 百度一下,你就知道
    # 获取当前窗口的句柄
    hedl=driver.current_window_handle #获取当前窗口句柄
    # print(hedl)
    # sleep(1)
    hendles=driver.window_handles#获取所有窗口句柄
    # print(hendles)
    for i in hendles:#遍历所有的窗口句柄
    if i !=hedl: #如果当前变量的句柄不等于获取的单个句柄
    driver.switch_to.window(i)
    title =driver.title
    print(title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!



    备注:
    京东定位输入框

    获取句柄,切换,在根据索引取窗口(0 表示第一个窗口, 1表示第二个窗口,-1表示最后一个窗口)

    获取当前窗口   和  获取当前句柄



  • 相关阅读:
    JavaScript常用设计模式
    js 判断l对象类型
    JavaScript编程(终极篇)
    微信小程序开发-滑动操作
    解决Jquery向页面append新元素之后事件的绑定问题
    C# list与数组互相转换
    C# “贝格尔”编排法
    C#数字格式化
    SQL从一个表查询数据插入/更新到另一个表
    全局唯一标识符 (GUID)
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13737013.html
Copyright © 2011-2022 走看看