目的:使用selenium或者appium时,等待下个定位的元素出现,特别是web端加载的过程,为了提高脚本的稳定性,需要在脚本中增加等待时间

常见的三种等待: sleep() 【强制等待】; implicitly_wait() 【隐性等待】; webDriverWait()【显性等待】

  1. 【强制等待】sleep() :固定休眠时间设置;执行到此时不管什么就固定的等待三秒之后再接着执行后面的操作
  • python的time包提供了休眠方法sleep() ,导入time包后就可以使用sleep(),进行脚本的执行过程进行休眠;以秒为单位
  • Java的Thread类里提供了休眠方法sleep,导入包后就能使用;以毫秒为单位
  1. 【隐性等待】 implicitly_wait() :又叫智能等待,是webdirver提供的一个超时等待。若在规定时间内完成加载加载完成,则执行下一步,否则一直等到时间截止;如超出了设置时间的则抛出异常;隐性等待对整个driver的周期都起作用,是针对执行脚本的所有对象
python:driver.implicitly_wait(10) # 隐性等待,最长等10秒
JAVA   :driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)
  1. 【显性等待】 webDriverWait() 在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException Java的使用方法
WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)
Java的使用方法
WebDriverWaitwait=new WebDriverWait(driver, 10);
WebElement wl= wait.until(new ExpectedCondition<WebElement>() {  
            @Override
            publicWebElement apply(WebDriver d) {  
                returnd.findElement(By.cssSelector(".red_box"));  
        })
  1. 下面通过一个实例来加深理解
#coding=utf-8
from selenium import webdriver
#导入 WebDriverWait 包
from selenium.webdriver.support.ui import WebDriverWait
#导入 time 包
from sleep import  sleep
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
#WebDriverWait()方法使用
element=WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id("kw"))        #
element.send_keys("selenium")
#添加智能等待
driver.implicitly_wait(30)     #implicitly_wait()方法比sleep()更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待
driver.find_element_by_id("su").click()
#添加固定休眠时间
sleep(5)        #sleep()方法以秒为单位,假如休眠时间小时 1 秒,可以用小数表示
driver.quit()



spring boot 日志文件限制大小 springboot项目日志文件

SpringBoot整合日志1、在SpringBoot中,我们可以使用Logback作为日志框架,在pom.xml文件中加入以下依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</a