zoukankan      html  css  js  c++  java
  • selenium基础(多表单切换、多窗口切换)

    一、多表单的切换

    frame:HTML页面中的一中框架,主要作用是在当前页面中指定区域显示另一页面元素;

                 (HTML语言中,frame/iframe标签为表单框架)

    • 在web应用中会遇到frame或者iframe表单嵌套页面的应用,对于表单内嵌页面上的元素无法直接进行定位
    • 通过driver.switch_to.frame("id|name")方法将当前定位的主体切换为frame或iframe表单的内嵌页面中
    • 恢复默认页面方法:driver.switch_to.default_content()
    • 以126邮箱登录功能为例,代码如下
    • from selenium import webdriver
      import time
      from webdriver.common.action_chains import ActionChains
      
      driver=webdriver.Firefox()
      driver.get("https://mail.126.com/")
      driver.maximize_window()
      driver.find_element_by_id("switchAccountLogin").click()
      time.sleep(1)
      #定位当内嵌表单中
      driver.switch_to.frame("")#因id是动态的,通过name进行定位
      driver.find_element_by_name("email").send_keys(13212345678)
      time.sleep(1)
      driver.find_element_by_name("password").send_keys(12345678)
      time.sleep(1)
      #恢复到默认页面
      driver.switch_to.default_content()
      driver.quit()
    #以麦子学院为例:
    from selenium import webdriver
    import time
    
    driver=webdriver.Firefox()
    driver.get("http://www.maiziedu.com/")
    time.sleep(10)
    driver.switch_to.frame("chatIframe")#进入嵌套表单页面
    driver.find_element_by_xpath('//*[@id="chat-close"]').click()
    driver.switch_to.default_content()#恢复到默认页面
    time.sleep(2)
    driver.find_element_by_link_text('登录').click()
    driver.find_element_by_id('id_account_l').send_keys("1234qw3486029")
    driver.find_element_by_id('id_password_l').send_keys(12345)
    driver.find_element_by_id('login_btn').click()
    time.sleep(2)
    
    driver.quit()

    二、多窗口切换
    说明:在HTML页面中,经常有a标签也就是超链接,这些链接在执行时,有的会在新的窗口的打开链接

    1、多窗口切换

    说明:在WebDriver中的封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法

    (句柄:窗口的唯一开标识码)

    2、方法:

    (1)driver.current_window_handle   获取当前窗口句柄

    (2)driver.window_handles      获取所有窗口句柄

    (3)driver.switch_to.window(handle)   切换指定句柄窗口

    (4)driver.close()    关闭当前的句柄

    (5)driver.quit()    关闭浏览器

    from selenium import webdriver
    import time
    
    driver=webdriver.Firefox()
    #进入百度首页-搜索麦子学院
    driver.get('https://www.baidu.com')
    time.sleep(2)
    driver.find_element_by_id('kw').send_keys('麦子学院')
    driver.find_element_by_id('su').click()
    time.sleep(2)
    #搜索麦子学院首页
    driver.find_element_by_partial_link_text('专业IT职业教育平台').click()
    time.sleep(2)
    #跳转到百度引擎页面
    driver.switch_to.window(driver.window_handles[0])#获取窗口的句柄,并跳转到第一个句柄
    time.sleep(2)
    #跳转回麦子学院首页
    driver.switch_to.window(driver.window_handles[1])#跳转回麦子学院首页
    time.sleep(2)
    #关闭麦子学院首页句柄
    driver.close()
    time.sleep(2)
    
    #退出浏览器
    driver.quit()
  • 相关阅读:
    TDengine在上海电气储能智慧运维系统中的应用
    一文带你理解TDengine中的缓存技术
    taosAdapter正式发布:支持从OpenTSDB向TDengine无缝迁移
    TDengine 在中节能风力发电运维系统中的落地实践
    格创东智选择 TDengine,实现海量数据实时全生命周期管理
    TDengine 在水电厂畸变波形分析及故障预判系统中的应用
    使用wireshark抓包分析TCP三次握手
    K8s中 蓝绿部署、金丝雀发布、滚动更新汇总
    K8s运维锦囊,19个常见故障解决方法
    一次由 Kubernetes HostPort 引发的服务故障排错记实
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11695431.html
Copyright © 2011-2022 走看看