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()
  • 相关阅读:
    linux mint使用起來比較穩定
    ubntu下的记录软件brasero ,mint内置
    [Enterprise Library]Data (二)DataCollection
    jquery 获取标签名
    谁会做logo呢
    供用淘宝卖家常用的称谓:各位亲,跨年,诸事顺利~
    rails缓存 学习
    test
    jquery 复习基础知识
    开机改用nginx启动,停止apache2的开机启动
  • 原文地址:https://www.cnblogs.com/yan-2010/p/14239951.html
Copyright © 2011-2022 走看看