Java+Selenium显式等待常用函数之ExpectedConditions

通常配合public WebDriverWait(WebDriver driver, Duration timeout)和public V until(Function<? super T, V> isTrue)使用
ExpectedConditions类均返回ExpectedCondition对象,ExpectedCondition继承Function

1、 检查页面title是否是指定字符串

public static ExpectedCondition<Boolean> titleIs(final String title) 
title:预期的标题,必须完全匹配.
示例:5秒内等待页面title成为“百度一下,你就知道”,否则抛出异常。
ExpectedCondition<Boolean> b = ExpectedConditions.titleIs("百度一下,你就知道");
new WebDriverWait(driver, Duration.ofSeconds(5)).until(b);

2、检查页面title是否包含指定字符串

public static ExpectedCondition<Boolean> titleContains(final String title)
title:包含的字符串
示例:5秒内等待页面title包含“百度一下”,否则抛出异常。
ExpectedCondition<Boolean> b = ExpectedConditions. titleContains ("百度一下");
new WebDriverWait(driver, Duration.ofSeconds(5)).until(b);

3、检查当前页面URL是否为指定URL

public static ExpectedCondition<Boolean> urlToBe(final String url)

4、检查当前页面URL包含指定字符串文本

public static ExpectedCondition<Boolean> urlContains(final String fraction)

5、检查当前页面URL是否匹配指定正则表达式

public static ExpectedCondition<Boolean> urlMatches(final String regex)

6、检查页面上是否存在指定元素(不一定可见)(By locator)

public static ExpectedCondition<WebElement> presenceOfElementLocated(final By locator)
示例:5秒内判断页面是否存在指定元素,不存在则抛出异常
By locator = By.name("name") ;
ExpectedCondition<WebElement>  w = ExpectedConditions. presenceOfElementLocated(locator)
new WebDriverWait(driver, Duration.ofSeconds(5)).until(w);

7、检查页面上是否存在指定元素,且元素是可见的(By locator)

public static ExpectedCondition<WebElement> visibilityOfElementLocated(final By locator)

8、检查页面上所有与定位器匹配的元素存在且可见(By locator)

public static ExpectedCondition<List<WebElement>> visibilityOfAllElementsLocatedBy(final By locator)
示例:
By locator = By.name("id") ;
ExpectedCondition<List<WebElement>> ws= ExpectedConditions.visibilityOfAllElementsLocatedBy(locator) ;
new WebDriverWait(driver, Duration.ofSeconds(5)).until(ws);

9、检查页面上所有指定的元素存在且可见(WebElement… elements)

public static ExpectedCondition<List<WebElement>> visibilityOfAllElements(final WebElement... elements)
public static ExpectedCondition<List<WebElement>> visibilityOfAllElements(final List<WebElement> elements)
示例:
List<WebElement> elements = driver.findElements(By.id("id")) ;
ExpectedCondition<List<WebElement>> lw = ExpectedConditions. visibilityOfAllElements(elements) ;
WebElement element = driver.findElement(By.name("name"));
WebElement element1 = driver.findElement(By.name("name"));
ExpectedCondition<List<WebElement>> lw = ExpectedConditions.visibilityOfAllElements(element1,element) ;
new WebDriverWait(driver, Duration.ofSeconds(5)).until(lw);

10、检查页面上指定的元素存在且可见(WebElement element)

public static ExpectedCondition<WebElement> visibilityOf(final WebElement element)
示例:
WebElement element = driver.findElement(By.id("id")) ;
ExpectedCondition< WebElement> lw = ExpectedConditions.visibilityOf(element) ;
new WebDriverWait(driver, Duration.ofSeconds(5)).until(lw);

11、检查页面上是否存在至少一个满足定位的元素(By locator)

public static ExpectedCondition<List<WebElement>> presenceOfAllElementsLocatedBy(final By locator)
示例:
By locator = By.name("id") ;
ExpectedCondition<List<WebElement>> lw = ExpectedConditions. presenceOfAllElementsLocatedBy (locator) ;
new WebDriverWait(driver, Duration.ofSeconds(5)).until(lw);

12、检查指定元素的文本值是否与指定字符串一致(常用于等待同一元素文本值变更)

public static ExpectedCondition<Boolean> textToBePresentInElement(final WebElement element,final String text)

13、检查指定定位的文本值是否与指定字符串一致

public static ExpectedCondition<Boolean> textToBePresentInElementLocated(final By locator,final String text)

14、检查指定元素的‘value’是否与指定字符串一致

public static ExpectedCondition<Boolean> textToBePresentInElementValue(final WebElement element,final String text)

15、检查指定定位的‘value’是否与指定字符串一致

public static ExpectedCondition<Boolean> textToBePresentInElementValue(final By locator,final String text)

16、检查是否可切换至指定的iframe,如果可以,则完成切换

public static ExpectedCondition<WebDriver> frameToBeAvailableAndSwitchToIt(final String frameLocator)
frameLocator:id或name

public static ExpectedCondition<WebDriver> frameToBeAvailableAndSwitchToIt(final By locator)

public static ExpectedCondition<WebDriver> frameToBeAvailableAndSwitchToIt(final int frameLocator)
frameLocator:index索引

public static ExpectedCondition<WebDriver> frameToBeAvailableAndSwitchToIt(final WebElement frameLocator)

17、检查元素在页面上不可见或不存在

public static ExpectedCondition<Boolean> invisibilityOfElementLocated(final By locator)

18、检查页面元素是可见的,并且是可点击的

public static ExpectedCondition<WebElement> elementToBeClickable(final By locator)
public static ExpectedCondition<WebElement> elementToBeClickable(final WebElement element)

19、检查页面元素是否被选中

public static ExpectedCondition<Boolean> elementToBeSelected(final WebElement element)

20、检查页面指定定位元素的指定属性有特定的值

public static ExpectedCondition<Boolean> attributeToBe(final By locator,final String attribute,final String value)
public static ExpectedCondition<Boolean> attributeToBe(final WebElement element,final String attribute,final String value)
attribute:属性名称
value:指定的属性值

21、检查页面指定定位元素有指定的文本

public static ExpectedCondition<Boolean> textToBe(final By locator, final String value)

22、检查页面指定元素的指定属性包含特定的字符串

public static ExpectedCondition<Boolean> attributeContains(final WebElement element,final String attribute,final String value)
public static ExpectedCondition<Boolean> attributeContains(final By locator,final String attribute,final String value)

23、检查指定元素的指定属性值非空

public static ExpectedCondition<Boolean> attributeToBeNotEmpty(final WebElement element,final String attribute)

24、检查给定的所有元素存在但不可见(多个元素)

public static ExpectedCondition<Boolean> invisibilityOfAllElements(final WebElement... elements)
public static ExpectedCondition<Boolean> invisibilityOfAllElements(final List<WebElement> elements)

25、检查指定元素不可见(单个元素)

public static ExpectedCondition<Boolean> invisibilityOf(final WebElement element)
上一篇:matplotlib各种刻度设置


下一篇:web自动化实战之BasePage