zoukankan      html  css  js  c++  java
  • python与selenium自动化基础-测试脚本中等待方法

    1、等待是为了使脚本执行更加稳定
    2、常用的休眠方式:time模块的sleep方法

    浏览器等待
    1) 显示等待
        显示等待是根据条件进行等待,等待条件出现
        实现:
            from selenium.webdriver.common.by import By
            from selenium.webdriver.support.ui import WebDriverWait
            from selenium.webdriver.support import expected_conditions as EC

            WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
        WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,
        默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置
        时间检测不到则抛出异常。

    from selenium import webdriver
    # 导入By
    from selenium.webdriver.common.by import By
    # 导入webdriver等待类
    from selenium.webdriver.support.ui import WebDriverWait
    # 导入预期条件设置类
    from selenium.webdriver.support import expected_conditions as EC
    
    # 创建一个浏览器
    driver = webdriver.Firefox()
    
    # 访问百度
    url = 'http://www.baidu.com'
    driver.get(url)
    
    # 浏览器总共等待10秒,在10秒内,每隔0.5秒去使用id的方式定位一下元素,如果定位到,就结束等待,如果定位不到同时没有大于10秒,则继续等待
    el = WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located((By.ID,'lg')))
    
    driver.close()

    2)隐式等待
        隐式等待是根据是件进行等待,等待特定时间
            driver.implicitly_wait(n)
        n的单位为秒,n为最大值,在这个最大值内只要元素定位到就结束等待
    优先 隐式等待     次之 显式等待 最次 固定等待

    selenium模块中的等待方法
    implicitly_wait()    设置webdriver等待时间,查找所有元素的等待时间
    WebDriverWait    等待条件满足或者超时后退出   from selenium.webdriver.support.ui import WebDriverWait

    from selenium import webdriver
    d = webdriver.Firefox()
    d.get('https://www.baidu.com/')
    d.implicitly_wait(5)
    d.find_element_by_id('kw').send_keys("慕课网")
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    import time
    def get_ele_times(driver,times,func):
        return WebDriverWait(driver,times).until(func)
    def test():
        d = webdriver.Firefox()
        d.get('https://www.baidu.com/')
        d.find_element_by_id('kw').clear()
        d.find_element_by_id('kw').send_keys("慕课网")
        d.find_element_by_id('su').click()
        ele = get_ele_times(d, 10,
                            lambda d: d.find_element_by_partial_link_text('程序员的梦工厂'))
        ele.click()
        time.sleep(10)
        print(d.window_handles)
        d.switch_to.window(d.window_handles[1])
        print(d.current_window_handle)
        d.quit()
    test()

  • 相关阅读:
    harbor镜像拉取到本地
    hadoop单机部署
    tcpdump抓包
    centos7安装桌面启动`
    lvm虚拟机扩容虚拟机根目录
    ubuntu 18 静态网址及生效
    ubuntu安装微信
    QPS、TPS、PV、UV、GMV、IP、RPS
    RabbitMQ死信队列
    mysql update语句与limit的结合使用
  • 原文地址:https://www.cnblogs.com/peiya/p/12144720.html
Copyright © 2011-2022 走看看