• python


    # -*- coding:utf-8 -*-
    
    '''
    @project: web学习
    @author: Jimmy
    @file: 元素操作-切换.py
    @ide: PyCharm Community Edition
    @time: 2019-01-19 10:43
    @blog: https://www.cnblogs.com/gotesting/
    
    '''
    
    
    '''
    windows窗口切换:切换到要操作的窗口
    
        有多个窗口
        1. 触发新窗口的出现
        2. 得知道新窗口是谁  -- 依据窗口的window_handle来识别窗口
        3. 得到窗口的window_handle -- driver.window_handles(当前打开的所有窗口的句柄)
                                                A. 得到的是一个有序列表
                                                B. 新窗口: -1
        4. 切换:driver.switch_to.window(要切换的窗口的句柄)
    
    
    '''
    
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import  expected_conditions as EC
    from selenium.webdriver.common.by import By
    import time
    
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    driver.find_element_by_id('kw').send_keys('少年阿玉 博客园')
    driver.find_element_by_id('su').click()
    
    wins = driver.window_handles
    time.sleep(3)
    
    # 点击到新窗口
    driver.find_element_by_xpath("//*[@id='1']//h3//a").click()
    
    # 判断新窗口是否已打开
    WebDriverWait(driver,5,1).until(EC.new_window_is_opened(wins))
    
    # 切换窗口
    # 1. 获取所有窗口
    wins1 = driver.window_handles
    # 2. 切换到最新窗口
    driver.switch_to.window(wins1[-1])
    
    '''
     alert弹出框操作
    
    (1)使用switch_to方法先切换到浏览器弹出框
        driver.switch_to.alert
    (2)Alert类提供了一系列的操作方法
        dismiss(): 否
        accept(): 是
        text(): 获取弹出框里的文本内容
        Send_keys(): 在弹出框里输入文本
    '''
    alert = WebDriverWait(driver,10,1).until(EC.alert_is_present())
    alert.accept()


    '''
    iframe切换

    方式一:
    WebDriverWait(driver,20,1).until(EC.visibility_of_element_located(By.XPATH,'XXXXXXX'))

    1. 确认你要操作的元素,是否存在于iframe中,如果元素在iframe中,则切换
    2. 找到这个iframe
    3. 切换到这个iframe
    driver.switch_to.frame() # name or index or webelement
    time.sleep(1)
    4. 切换完成后,目前就是以iframe当中的html为主html

    方式二:
    WebDriverWait(driver,20,1).until(EC.frame_to_be_available_and_switch_to_it('XXXXXX'


    回到默认的html页面,无论身在哪一层iframe,执行一次就可。
    driver.switch_to.default_content()


    '''
     
  • 相关阅读:
    zzuli--2134: 维克兹的进制转换(规律)
    hdu--1316--How Many Fibs?(java大数)
    NYOJ--517--最小公倍数(大数打表)
    NYOJ--513--A+B Problem IV(大数)
    NYOJ--45--棋盘覆盖(大数)
    NYOJ--114--某种序列(大数)
    HAUT--1262--魔法宝石(暴力)
    NYOJ--1276--机器设备(河南省第九届省赛,简单的bfs)
    hdu--1429--胜利大逃亡(续) (bfs+状态压缩)
    NYOJ--541--最强DE 战斗力(递推)
  • 原文地址:https://www.cnblogs.com/gotesting/p/10291214.html
Copyright © 2020-2023  润新知