zoukankan      html  css  js  c++  java
  • 多表单切换和多窗口切换

    多表单切换


    如果定位不到元素,先查看是不是iframe表单,如果是先切换到iframe表单

    import time
    from selenium import webdriver
    #要想调用键盘按键操作需要引入keys包
    from selenium.webdriver.common.keys import Keys
    # from selenium.webdriver.commom.by import By
    from selenium.webdriver.common.action_chains import ActionChains
    def swich_frame():
        browser = webdriver.Firefox()
        #切换到表单 iframe(id='if')
        browser.switch_to.frame('if')
        #接下来就操作正常的元素了
        browser.find_element_by_css_selector("#kw").send_keys(u'易烊千玺')
        browser.find_element_by_id("su").click()

    switch_to.frame()默认可以直接取表单的id或者 name属性。如果ifram 没有可用的id 和name 属性,则可以通过下面的方法定位

    def swich_frame():
        browser = webdriver.Firefox()
        #先通过xpath 定位到iframe
        xf=browser.find_element_by_xpath('//*[@class="if"]')
        #再将定位对象传给switch_to.frame()方法
        browser.switch_to.frame(xf)
        
        browser.switch_to.parent_frame()
    switch_to.parent_frame()跳出当前一级表单,该方法默认对应于离它最近的switch_to.frame()方法,除此之外,在进入多级表单的情况下,还可以通过switch_to.default_content()跳回最外层的页面

     多窗口切换


     有些web页面打开后,会重新打开一个新的窗口,如果想要在新的窗口上操作,就得先切换窗口。获取窗口的唯一标识用句柄表示,所以只要切换句柄,就可以在多个页面上操作

    driver.current_window_handle :获取当前窗口句柄

    driver.window_handles :返回所有窗口的句柄

    driver.switch_to.window() :用于切换到相应的窗口

    def switch_window():
        browser = webdriver.Firefox()
        browser.implicitly_wait(5)
        browser.get("http://www.baidu.com")
        #获得百度搜索窗口句柄
        search_window=browser.current_window_handle
    
        browser.find_element_by_link_text(u"登录").click()
        browser.find_element_by_link_text(u'立即注册').click()
    
        #获得当前所有打开窗口的句柄
        all_handles=browser.window_handles
    
        #进入注册窗口
        for handle in all_handles:
            if handle!=search_window:
                browser.switch_to.window(handle)
                browser.implicitly_wait(10)
                browser.find_element_by_name("phone").send_keys('username')
                browser.find_element_by_css_selector('#TANGRAM__PSP_4__password').send_keys('1234456tang')
                time.sleep(3)
    
        #回到搜索窗口
        for  handle in all_handles:
            if handle==search_window:
                browser.switch_to.window(handle)
                browser.implicitly_wait(10)
                browser.find_element_by_id('kw').send_keys('test')
                browser.find_element_by_id('su').click()
                time.sleep(2)
        browser.quit()
  • 相关阅读:
    Mysql语句练习
    Mysql-------查询各科成绩前三名的记录
    Mysql--查询"01"课程比"02"课程成绩高的学生的信息及课程分数
    模态框拖拽案例分析--元素偏移量 offset 系列
    CSS中z-index的属性与使用
    《将博客搬至CSDN》
    CSS中Position几种属性的总结
    考研数学一
    ubuntu16.04安装mysql报错解决
    LoRaWAN 规范1.0 (章节10~13)
  • 原文地址:https://www.cnblogs.com/yan-2010/p/14239951.html
Copyright © 2011-2022 走看看