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表示最后一个窗口)

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



  • 相关阅读:
    scrapy 知乎用户信息爬虫
    快读模板&&快出模板
    洛谷P7078 贪吃蛇
    CSP2020-S1总结
    洛谷P1736 创意吃鱼法
    luogu P3004 [USACO10DEC]宝箱Treasure Chest
    Markdown与LaTeX
    洛谷P2197 【模板】nim游戏
    洛谷CF1360H Binary Median
    洛谷P1063 能量项链
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13737013.html
Copyright © 2011-2022 走看看