显示等待
WebDriverWait
elementToBeCllickable(By locator)页面元素是否出现可用(enabled)和可被点击
elementToBeSelected(WebElement element)页面元素处于被选中状态
presenceOfElementLocated(By locator)页面元素在页面中存在
textToBePresentInElement(By locator)在页面元素中是否包含特定的文本
textToBePresentInElementValue(By locator,java.lang.Stringtext)页面元素值
titleContains(java.lang.String.title)标题
WebDriverWait wait=new WebDriverWait(driver,10); //获取内容出现 wait.until(ExpectedConditions.titleContains("baoyu")); System.out.println("baoyu出现了"); //列表选项是否选中 WebElement element = driver.findElement(By.id("")); wait.until(ExpectedConditions.elementToBeSelected(element)); //列表选项是否可被单击 wait.until(ExpectedConditions.elementToBeClickable(By.xpath(""))); //是否在页面中 wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(""))); //是否包含文字 WebElement p= driver.findElement(By.id("")); wait.until(ExpectedConditions.textToBePresentInElement(p,"爱吃水果"));
超时抛出TimeOutException,默认500毫秒
public class WaitToReturnElement { /* * 设置超时时间为5秒,返回指定xpath的WebElement * */ public static WebElement waitForByXpath(final WebDriver driver,final String xpath) { WebDriverWait wait = new WebDriverWait(driver, 5); return wait.until(new ExpectedCondition<WebElement>() { public WebElement apply(WebDriver arg0) { return driver.findElement(By.xpath(xpath)); } }); } /* * 设置超时时间为10秒,返回指定id的WebElement * */ public static WebElement waitForById(final WebDriver driver,final String id) { WebDriverWait wait = new WebDriverWait(driver, 10); return wait.until(new ExpectedCondition<WebElement>() { public WebElement apply(WebDriver arg0) { return driver.findElement(By.id(id)); } }); } /* * 设置超时时间为10秒,返回指定xpath的WebElement是否出现 * */ public static Boolean isElementDisplayed(final WebDriver driver,final String xpath) { WebDriverWait wait = new WebDriverWait(driver, 10); return wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver arg0) { return driver.findElement(By.xpath(xpath)).isDisplayed(); } }); } }
//判断Ajax请求是否加载完成 public static Boolean ajaxRequestFinish(final WebDriver driver) { WebDriverWait wait = new WebDriverWait(driver, 10); return wait.until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver arg0) { JavascriptExecutor js = (JavascriptExecutor) driver; return (Boolean) js.executeScript("return jQuery.active==0"); } }); }
//判断页面元素是否存在
WebDriver driver; private Boolean IsElementPresent(By by){ try { driver.findElement(by); return true; } catch (NoSuchElementException e) { return false; } } @Test public void testsElementPresent(){ driver.get(""); if(IsElementPresent(By.id(""))){ WebElement element = driver.findElement(By.id("")); if (element.isEnabled()==true){ }else { Assert.fail("未找到"); } } }
ExpectedCondition
等待元素直到可点击状态 WebDriverWait wait=new WebDriverWait(driver,10); wait.until(ExpectedConditions.elementToBeClickable(By.xpath("")));
隐式等待
查找WebDriver无法使用的元素时等待,默认0,生命周期整个WebDriver,跑出NoSuchElementException异常
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Assert.fail("没有找到元素”);