zoukankan      html  css  js  c++  java
  • Web自动化----元素等待方法(显式等待和隐式等待)

    from selenium import webdriver
    import time
    
    from selenium.webdriver.support.wait import WebDriverWait
    import selenium.webdriver.support.expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    """
    元素等待方法
    1.隐式等待(针对所有元素设置最长的等待时间)
    设置完隐式等待之后,后面的所有元素查找使用的方式都是一样。
    优点: 当某些元素可能会由于加载时间 不能定位到元素,这类元素可以通过元素的隐式等待来解决。
    缺点:当有比较多的元素被更改,无形中会增加整个自动化脚本运行的时间。
    """
    # 访问https://www.juhe.cn/ ,打开网页过一会才会弹出注册弹框
    driver = webdriver.Chrome(executable_path='../../drivers/chrome89/chromedriver')
    
    # # 设置全局等待时间最长等待10秒, 在10秒内找到元素 假设第5秒的时候找到元素,后面5秒就不再等待
    # driver.implicitly_wait(10)
    #
    # driver.get('https://www.juhe.cn/')
    # # 记录开始时间(单位:s)
    # start = time.perf_counter()
    # ele = driver.find_element_by_id("layui-layer-iframe1")
    # # 记录结束时间
    # end = time.perf_counter()
    # print('注册弹框显示用时:',end-start,'
    弹框坐标:',ele.rect)
    
    
    """
    2.显式等待(针对单个元素设置最长的等待时间)
    """
    driver.get('https://www.juhe.cn/')
    
    # 实例化类 针对单个元素设置最长等待时间为10秒
    web_wait = WebDriverWait(driver,timeout=10)
    start = time.perf_counter()
    
    # 添加条件,根据id查找元素,元素加载出来
    web_wait.until(EC.presence_of_element_located((By.ID,'layui-layer-iframe1')))
    
    end = time.perf_counter()
    print(f'注册弹框显示用时:{end-start}s')
    # driver.quit()      # 关闭程序运行时打开的自动化测试浏览器窗口
  • 相关阅读:
    译:编程面试的10大算法概念汇总
    Android内存优化之封装九宫格
    Android Java 程序员必备开发工具
    译:如何成为一个通晓多种编程语言的程序员
    8大排序算法图文讲解
    Android酷炫实用的开源框架(UI框架)
    Android动态加载字节码
    利用无效字节码指令引发逆向工具崩溃(二)
    oracle 12c linux服务器启动监听
    oracle无主键去重方法
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14788944.html
Copyright © 2011-2022 走看看