[Selenium]怎样等待元素出现之后再消失,譬如Loading icon

界面上有些元素是要先等它出现,再等它消失,譬如loading icon

这个是等多个loading icon出现后消失

/**
	 * Wait for loading icon disappear in dialog and Widgets
	 * @author jz
	 */
	public void waitForLoadingIconDisappearInDialog(WebDriver driver) {
		System.out.println("Wait for loading icons display in dialog or widgets.");
		Function<WebDriver, Boolean> waitFn = new Function<WebDriver, Boolean>() {
			@Override
			public Boolean apply(WebDriver driver) {
				try {
					for (WebElement el : driver.findElements(By.cssSelector("div.win-bd-mask[style*='display: block'] div.win-bd-mask-waiting"))) {
						if (el.isDisplayed()) {
							System.out.println("Loading icon display in dialog or widgets.");
							return false;
						}
					}
				} 
				catch (Exception ex) {
					return true;
				}
				return true;
			}
		};

		WebDriverWait wait = new WebDriverWait(driver, 120, 1000);
		wait.withMessage("Loading icons should disppear in dialog or widgets in 120s");
		wait.until(waitFn);
		System.out.println("Loading icons disspear in dialog or widgets.");
	}

 这个是等一个loading icon 出现后消失

public void waitForLoadingIconDisappearInNewWebPage(WebDriver driver) {
		System.out.println("Wait for loading icon display in new web page.");
		final By cssSelector=By.cssSelector("div.x-mask-msg");
		Function<WebDriver, Boolean> waitFn = new Function<WebDriver, Boolean>() {
			public Boolean apply(WebDriver driver) {
				try{
					if(driver.findElement(cssSelector).isDisplayed()){
						System.out.println("Loading icon display in new web page.");
						return false;
					}
				}
				catch(Exception e){
					return true;
				}
				return true;
			}
		};
		WebDriverWait wait = new WebDriverWait(driver, 120, 2000);
		wait.withMessage("Loading icon should disappear in new web page in 120s");
		wait.until(waitFn);
		System.out.println("Loading icon disappear in new web page.");
	}

 如果等显现的元素变成隐藏,相对要简单一些,先等它可见,再等它不可见

public void waitForLoadingIconDisappearInHomePage(WebDriver driver) {
		this.waitForElementVisible(driver, By.cssSelector("div#window-waiting-box"), 20 ,"Waiting box should display in 20s");
		this.waitForElementNotVisible(driver, By.cssSelector("div#window-waiting-box"), 120 ,"Waiting box should disppear in 120s");
	}

 

转载于:https://www.cnblogs.com/MasterMonkInTemple/p/4516991.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值