Selenium隐示和显性等待

本文介绍了Selenium中的等待机制,包括隐形等待和显性等待。隐形等待通过设置`implicitlyWait`指定WebDriver等待元素出现的时间,其效果在整个WebDriver实例生命周期有效。显性等待利用`ExpectedConditions`类提供的方法,根据特定条件判断是否继续执行,如元素可点击、元素存在等。显性等待更灵活,可避免不必要的等待并防止超时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.隐形等待
隐形等待:隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉WebDriver查询Dom一定时间。默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用。

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

2… 显性等待
显式等待 使用ExpectedConditions(期望条件)类中自带方法, 可以进行显试等待的判断。 只有满足显式等待的条件满足,代码才会继续向后执行,如果超过设定的最大显式等待时间, 这程序会抛出异常。

定义的等待条件可以有:

(1)页面元素是否在页面上可用和可被单击:elementToBeClickable(By locator)

(2)页面元素处于被选中状态:elementToBeSelected(WebElement element)

(3)页面元素在页面中存在:presenceOfElementLocated(By locator)

(4)在页面元素中是否包含特定的文本:textToBePresentInElement(By locator)

(5)页面元素值:textToBePresentInElementValue(By locator, java.lang.String text)

(6)标题 (title):titleContains(java.lang.String title)

(7)元素可见(加载出现):visibilityOfElementLocated()

(8)元素不可见(加载消失):invisibilityOfElementLocated()
封装显示等待方法

//检查某个元素是否出现
public WebElement WebDriverWait(By  locator,String msg) {

			WebElement element = null;
			try {

				WebDriverWait wait=new WebDriverWait(driver, 5);
				element = wait.until(ExpectedConditions
						.visibilityOfElementLocated(locator));
				System.out.println(msg+"元素出现了");
			} catch (Exception e) {
				System.out.println(msg+"元素不存在");
				e.printStackTrace();
			}
			return element;
		}

应用

//检查头像修改按钮是否出现,返回一个WebElement ,可对该元素进行操作

  public WebElement getnaImgLink() throws IOException {
    	return WebDriverWait(getByLoator.readByLoator("navimage"),"头像修改按钮");
    }

//查找元素是否可点击

public WebElement elementClickWhenReady(By locator, String msg) {
	WebElement element = null; 
	try {
		
		WebDriverWait wait=new WebDriverWait(driver, 5);
		element = wait.until(ExpectedConditions
		elementToBeClickable(locator));
		//element.click();可直接点击元素,但是为了少更改代码,所以注释掉了
		System.out.println(msg+"元素出现了");
	} catch (Exception e) {
		System.out.println(msg+"元素不存在");
		e.printStackTrace();
}
return element;

}
应用

  //检查头像保存按钮是否可点击  ,可点击返回一个WebElement 元素
    public  WebElement getSaveImage() throws IOException {
    	return  elementClickWhenReady(getByLoator.readByLoator("savimage"),"头像保存按钮");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值