• 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()
  • 相关阅读:
    浏览器中使用js跨域获取数据
    Flash和JavaScript通信
    display
    流媒体,hls
    防止字溢出
    <head>头部
    ps图层填充颜色——先选好颜色,再选中需要填充颜色或者修改颜色的图层,最后按住Alt+Delete键。完成。
    div相对于浏览器窗口居中、图片相对于外层的div居中
    CSS绘制三角形
    点击A页面链接,跳转至B页面指定位置
  • 原文地址:https://www.cnblogs.com/jingdenghuakai/p/11695431.html
Copyright © 2020-2023  润新知