zoukankan      html  css  js  c++  java
  • Selenium3+python自动化007-等待时间

    import time

    一、强制等待

    sleep(秒)

     

    二、显示等待

    使WebDriver等待指定元素条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)

    1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
    2. 导包 判断条件 --> from selenium.webdriver.support import expected_conditions as EC
    (将expected_conditions 通过as关键字起个别名:EC)
    3. WebDriverWait(driver, timeout, poll_frequency=0.5)
    1). driver:浏览器对象
    2). timeout:超时的时长,单位:秒
    3). poll_frequency:检测间隔时间,默认为0.5秒
    4. 调用方法 until(method):直到..时
    1). method:调用EC.presence_of_element_located(element)
    element:调用By类方法进行定位

    WebDriverWait(driver,30).until(EC.presence_of_element_located((By.ID,'userA')))

     1 # 导selenium包显示等待
     2 from selenium import webdriver
     3 from time import sleep
     4 
     5 # 访问chromedriver.exe
     6 chromedriver = (r"C:UsersAdministrator.PC-20181218JDBKAppDataLocalGoogleChromeApplicationchromedriver.exe")
     7 
     8 # 访问驱动
     9 driver = webdriver.Chrome(chromedriver)
    10 # 实例化浏览器对象
    11 # driver=webdriver.Chrome()
    12 
    13 # 定义url
    14 url='D:\pycharm\lebohtml\自动化05期-007-Selenium常用定位方法\html\注册A.html'
    15 # 实例化浏览器对象
    16 # driver=webdriver.Chrome()
    17 
    18 
    19 # 打开url
    20 driver.get(url)
    21 
    22 from selenium.webdriver.support.wait import WebDriverWait
    23 from selenium.webdriver.support import expected_conditions as EC
    24 from selenium.webdriver.common.by import By
    25 
    26 # 调用显式等待
    27 ele=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'userA')))
    28 ele.send_keys('admin')
    29 
    30 
    31 # 第一种写法
    32 # driver.find_element_by_id('userA').send_keys('admin')
    33 
    34 # 等待3秒
    35 sleep(3)
    36 
    37 # 关闭浏览器
    38 driver.quit()
    显示等待

    显示等待的优缺点:

    优点:显示等待比隐式等待更节约测试脚本执行时间

    缺点:每个操作需要单独判断

    三、隐式等待

    如果定位某一元素定位失败,那么就会触发隐式等待有效时长,如果在指定时长内加载完毕,则继续执行,否则

    抛出NoSuchElementException异常,如果元素在第一次就定位到则不会触发隐式等待时长;

    driver.implicitly_wait(timeout);

     1 # 导selenium包
     2 from selenium import webdriver
     3 from time import sleep
     4 
     5 # 访问chromedriver.exe
     6 chromedriver = (r"C:UsersAdministrator.PC-20181218JDBKAppDataLocalGoogleChromeApplicationchromedriver.exe")
     7 
     8 # 访问驱动
     9 driver = webdriver.Chrome(chromedriver)
    10 # 实例化浏览器对象
    11 # driver=webdriver.Chrome()
    12 
    13 # 定义url
    14 url='D:\pycharm\lebohtml\自动化05期-007-Selenium常用定位方法\html\注册A.html'
    15 # 实例化浏览器对象
    16 # driver=webdriver.Chrome()
    17 
    18 
    19 # 打开url
    20 driver.get(url)
    21 
    22 # 调用饮食等待
    23 driver.implicitly_wait(10)
    24 driver.find_element_by_id('userA').send_keys('admin')
    25 # 等待3秒
    26 sleep(3)
    27 
    28 # 关闭浏览器
    29 driver.quit()
    隐式等待

    隐式等待的优缺点: 

    优点:只需要设置一次,在driver的整个生命周期起作用

    缺点:程序会一直等待整个页面加载完成,也就是说浏览器窗口标签栏中不在出现转动的小圆圈,才会继续执行下一步。这样,想要获取的元素即使已经加载完成,也需要等待整个页面加载完成才能继续执行下一步

  • 相关阅读:
    python学习之第二课时--运行程序和字符编码
    python学习之前言
    一天一道算法题--6.14--思维题
    TOJ--2119--最小生成树和map
    NOJ--1046--dfs
    TOJ--1343--dfs
    一天一道算法题--6.13---计算几何
    一天一道算法题---6.12---链表结点的删除
    TOJ--1114--rmq/线段树
    TOJ--1278--最小生成树
  • 原文地址:https://www.cnblogs.com/liunaixu/p/11081664.html
Copyright © 2011-2022 走看看