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()

  • 相关阅读:
    主流液晶显示器尺寸参数
    不能访问网络位置的解决方法(转)
    打开Word提示你正试图运行的函数包含有宏或需要宏语言支持的内容
    教你如何防“蹭网”
    ASA数据库瘦身(原创)
    多种解决:“Word无法启动转换器mswrd632.wpc”方法
    百兆线与千兆线网线制作方法
    linux常用命令
    DefaultIfEmpty
    实现手机发送验证码 进行验证
  • 原文地址:https://www.cnblogs.com/peiya/p/12144720.html
Copyright © 2011-2022 走看看