zoukankan      html  css  js  c++  java
  • [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");
    	}
    
  • 相关阅读:
    互斥锁的通俗理解
    U-Boot下分区信息查看
    《计算机组成原理》唐朔飞第二版_笔记
    《大话程序员》安晓辉_笔记
    C++ 类对象的初始化顺序
    FilterTerminal使用说明全总结
    sed -i 命令常用方法总结
    入园记录
    cookies,sessionStorage 和 localStorage区别
    优雅降级和渐进增强的理解:
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/4516991.html
Copyright © 2011-2022 走看看