目的:使用selenium或者appium时,等待下个定位的元素出现,特别是web端加载的过程,为了提高脚本的稳定性,需要在脚本中增加等待时间
常见的三种等待:
sleep()
【强制等待】;
implicitly_wait()
【隐性等待】;
webDriverWait()【显性等待】
-
【强制等待】sleep()
:固定休眠时间设置;执行到此时不管什么就固定的等待三秒之后再接着执行后面的操作
-
python的time包提供了休眠方法sleep() ,导入time包后就可以使用sleep(),进行脚本的执行过程进行休眠;以秒为单位
-
Java的Thread类里提供了休眠方法sleep,导入包后就能使用;以毫秒为单位
-
【隐性等待】
implicitly_wait()
:又叫智能等待,是webdirver提供的一个超时等待。若在规定时间内完成加载加载完成,则执行下一步,否则一直等到时间截止;如超出了设置时间的则抛出异常;隐性等待对整个driver的周期都起作用,是针对执行脚本的所有对象
python:driver.implicitly_wait(10) # 隐性等待,最长等10秒
JAVA :driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)
-
【显性等待】
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"));
})
-
下面通过一个实例来加深理解
#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