精华内容
下载资源
问答
  • Python显示等待隐式等待和强制等待的区别 在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,...

    Python显示等待、隐式等待和强制等待的区别

    在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种。

    WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

    WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(self,method,message=)
    或者
    WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until_not(self,method,message=)
    
    self, 函数本身,在实际使用的时候不需要输入
    driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
    timeout,超时时间,默认以秒为单位
    poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
    ignored_exceptions, 超时后的异常信息,默认情况下抛 “NoSuchElementException",大家可以定义忽略的异常信息
    
    WebDriverWait一般由until或until_not配合使用
    
    until(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值不为False
    until_not(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值为False
    

    implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    

    sleep(): 强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。

    参考文章:
    显示等待、隐式等待和强制等待的区别
    selenium显示等待和隐式等待使用及区别

    展开全文
  • 1.隐式等待  隐式等待,就是在创建driver时,为浏览器对象创建一个最长等待时间,这个方法是得不到某个元素就等待,直到拿到元素位置(如果一直拿不到就等到时间截止),再执行下一步。  注意这里有一个弊端,那...

    1.隐式等待

      隐式等待,就是在创建driver时,为浏览器对象创建一个最长等待时间,这个方法是得不到某个元素就等待,直到拿到元素位置(如果一直拿不到就等到时间截止),再执行下一步。

      注意这里有一个弊端,那就是程序会一直等待整个页面加载完成(浏览器标签栏那个小圈不再转),才会执行下一步,但有时候页面想要的元素早就加载完成了,但是因为个别js之类的东西特别慢,仍得等到页面全部完成才能执行下一步,我想等我要的元素出来之后就下一步怎么办?这就要用到显性等待wait了。

    2.显示等待

      显示等待,(使用driver.implicitly_wait(1)) 就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么就跳出NoSushElementException
    (简而言之,就是直到元素出现才去操作,如果超时则报异常)

     

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time : 2018/12/6 16:32
    # @File : unittest_test5_1.py
    
    '''显示等待'''
    import unittest
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions
    class LoginAlert(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.get('https://www.baidu.com/?tn=91694651_hao_pg')
    
        def test_baidu_login_alert(self):
            search_filed = self.driver.find_element_by_id('kw')
            search_filed.clear()
            search_filed.send_keys('phones')
            search_filed.submit()
    
            #自定义的预期条件判断检测搜索框的class属性值
            WebDriverWait(self.driver,10).until(lambda s:s.find_element_by_id('kw').get_attribute('class')=='s_ipt')
    
            #等待页面出现‘百度首页’的时候再进行下一步操作
            search_filed_over = WebDriverWait(self.driver,10)\
                .until(expected_conditions.visibility_of_element_located((By.LINK_TEXT,u'百度首页')))
    
            #点击登录
            self.driver.find_element_by_xpath('//*[@id="u"]/a[3]').click()
    
            '''
            如果页面有alert弹窗,可以用alert_is_present()方法
            alert = WebDriverWait(self.driver,10)\
                .until(expected_conditions.alert_is_present())
            '''
    
            #待弹出页面上的‘x’可点时才可进行下一步操作
            search_login_text = WebDriverWait(self.driver,10)\
                .until(expected_conditions.element_to_be_clickable((By.ID,'TANGRAM__PSP_4__closeBtn')))
            search_login_text.click()
    
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__=='__main__':
        unittest.main(verbosity=2)

     

    转载于:https://www.cnblogs.com/xiuxiu123456/p/10435719.html

    展开全文
  • 隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。注意这里有一个弊端,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到...

    隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。注意这里有一个弊端,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,我仍得等到页面全部完成才能执行下一步,我想等我要的元素出来之后就下一步怎么办?有办法,这就要看selenium提供的另一种等待方式——显性等待wait了。
    ————————————————
    版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/huilan_same/article/details/52544521

    展开全文
  • from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait ...### 隐式等待和显示等待 1. 隐式等待:指定一个时间,在这个时间内一直会处于等待状态。隐式等待 需要使用
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from  selenium.webdriver.common.by import By
    
    """
    ### 隐式等待和显示等待
    1. 隐式等待:指定一个时间,在这个时间内一直会处于等待状态。隐式等待
    需要使用driver.implictly_wait
    2.显示等待:指定在某个时间内,如果某个条件满足了,那么就不会等待,
    如果在指定的时间内,条件都不满足,那么就不会再等待了。显示等待的方法是
    'from selenium.webdriver.support.ui import WebDriverWait'
    """
    driver_path = r'E:\pyspiderapp\chromedriver87.exe'
    #创建driver对象
    driver = webdriver.Chrome(executable_path=driver_path)
    
    # 1.隐式等待
    # driver.get("https://www.baidu.com/")
    # #等待10秒后再定位元素
    # driver.implicitly_wait(10)
    # driver.find_element_by_id("dqdxww")
    
    #2.显示等待
    driver.get("https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc")
    WebDriverWait(driver,100).until(
        EC.text_to_be_present_in_element_value((By.ID,"fromStationText"),"荆州")
    )
    WebDriverWait(driver,100).until(
        EC.text_to_be_present_in_element_value((By.ID,"toStationText"),"苏州北")
    )
    btn = driver.find_element_by_id("query_ticket")
    btn.click()
    

    selenium显示等待和隐式等待官方文档链接

    展开全文
  • 1.隐式等待: [code="python"]driver.implicitly_wait(30)[/code] 等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常,此为全局变量,是针对Driver 每次执行命令的 最长执行时间也可以...
  • sleep的区别就是sleep()是固定的,而implicitly_wait()是灵活的。 隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。 """ from selenium...
  • Selenium显示等待和隐式等待的区别 1、selenium的显示等待 原理:显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception ...
  • 隐式等待相比强制等待更智能,顾明思义,在脚本中我们一般看不到等待语句,但是它会在每个页面加载的时候自动等待;隐式等待只需要声明一次,一般在打开浏览器后进行声明。 声明之后对整个drvier
  • 前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断控制启动那个浏览器。这里我们暂时,支持三大浏览器...
  • WebDriver提供了两种类型的等待:显示等待和隐式等待。 1.显示等待使WebDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。from selenium import webdriver from selenium...
  • 当浏览器在加载页面时,页面内的元素可能并不是同时被加载完成的... WebDriver提供两种类型的等待:显式等待和隐式等待 显示等待使webdriver等待某个条件成立时继续执行,否则在达到最大时长抛出超时异常(Time...
  • WebDriver提供了两种等待类型:显示等待隐式等待。 1.显示等待:WebDriverWait()类 显示等待:设置一个等待时间一个条件,在规定时间内,每隔一段时间查看下条件是否成立,如果成立那么程序就继续执行,否则...
  • 等待时间目前有三种方法设置:显示等待隐式等待,强制等待1,时间——显示等待(WebDriverWait类),WebDriverWait一般until,until_not配合使用from selenium import webdriverfrom selenium.webdriver.common.by ...
  • 一、隐式等待隐式等待, 且方法如下: driver.implicitly_wait(20) 隐式等待的解释:设置一个超时时间,在这个时间内会去不断寻找元素,超时找不到时就会报错; 二、显示等待显示等待, 方法如下: WebDriverWait...
  • Python+Selenium自动化测试 5. 等待时间

    千次阅读 2019-03-25 23:27:59
    隐式等待显示等待 四 总结: 等待时间是我们做自动化测试时候的一个关键点,很多的页面跳转加载都需要时间,假如我们没有设置等待时间,元素没有加载出来,那么程序就会报错,一个稳定的自动化测试代码...
  • 这时测试报告会显示测试失败,这里就需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配, WebDriver 为这种情况提供了隐式等待和显式等待两种机制。 1、隐式等待 一旦设置隐式等待时间,就会作用于这个 ...
  •  WebDriver提供了两种类型的等待:显示等待和隐式等待。 一、显示等待  在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。  WebDriverWait(driver,tim
  • 这时需要一种延时机制,来使脚本的运行速度与程序的响应速度相匹配,WebDriver为这种情况提供了隐式等待和显式等待两种机制。 (二) 隐式等待 一旦设置隐式等待时间,就会作用于这个WebDriver实例的整个生命周期...
  • wait()隐式等待,设置页面等待加载的最长时间,这段时间不管页面需要操作的元素是否加载出来,都需要等待指定时间WebDriverWait(),设置的时间内,默认每隔一段时间检查下元素是否加载出来,如果加载处理就立即执行...
  • 学习python的第一天

    2019-03-25 20:10:46
    一、显示等待和隐式等待 Selenium中的“显示等待”和“隐式等待” 96 半个王国 关注 0.1 2016.07.21 23:57* 字数 1254 阅读 15886评论 2喜欢 8 现在越来越多的 web app 使用 AJAX 技术。当一个页面加载到浏览器...
  • P95——设置元素等待:显示等待和隐式等待 P100——定位一组元素 P104——多表单切换 P106——多窗口切换 P108——警告框处理 P110——上传文件 P116——下载文件 P117——操作cookie P120——调用Jav...
  • 上一篇文章说到显示等待和隐式等待语句,我们继续学习下面的命令方法。 8. 定位一组元素 这里书上是自己写了一个页面代码,通过访问本地这个页面来举例。但我觉得找一个现有的页面自己琢磨更有意思,而且复杂的...
  • 文章目录使用Selenium库例子引入声明游览器对象访问页面查找节点单个节点多个节点节点交互动作链模拟执行javascript获取节点信息获取属性获取文本...大小切换Frame延时等待隐式等待显示等待前进后退Cookies选项卡管理...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

python显示等待和隐式等待

python 订阅