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()      # 关闭程序运行时打开的自动化测试浏览器窗口
  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14788944.html
Copyright © 2011-2022 走看看