【Selenium】9显示等待、隐式等待

来源:互联网 发布:淘宝818 编辑:程序博客网 时间:2024/06/04 20:12

显示等待

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;        }    }    @Testpublic 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("没有找到元素”);
阅读全文
0 0
原创粉丝点击