java隐式 显式_【java+selenium3】隐式等待+显式等待 (七)

一、隐式等待 -- implicitlyWait

调用方式:driver.manage().timeouts().implicitlyWait(long time, TimeUnit unit);

//隐式等待调用方式,5秒+时间单位(枚举类型)

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

注意:

1.隐式等待只能作用于元素的等待。

2.智能等待,如果元素在指定的时间内找到,则不会继续等待,否则在指定时间内未找到元素则抛出NoSuchElementException。

3.作用域是全局的,跟driver的生命周期一样,一般定义在父类中,只要设置隐式等待后,页面所有的元素都会被绑定这种等待机制,只需设置一次,全局有效(只作用于元素),直到driver实例被关闭!

二、显式等待 -- WebDriverWait(显式等待)

//调用方式

WebDriverWait wait = newWebDriverWait();

WebElement element= wait.until(ExpectedConditions.xxx)

注意:

1.除了作用于元素等待还可以实现各种场景的等待,例如页面加载等!

2.智能的等待方式,元素在指定的时间内找到,则不会继续等待,否则抛出TimeOutException.

3.非全局设置,可以针对不同的元素绑定不同的等待机制,推荐优先使用这一种方式.

4.除了可以等待元素的查找,还可以支持多种其他的等待场景(例如:当加载页面的url出现预期值,具体参见ExceptedConditions类的方法)

@Testpublic voidtest2() {

driver.get("http://www.baidu.com");long startTime =System.currentTimeMillis();try{//程序一共等待5s,默认0.5秒检查一次元素是否加载完成

WebDriverWait wait = new WebDriverWait(driver, 5);//until方法,返回一个Boolean类型,判断元素现在是否存在在页面上。locator的元素如果可见就停止等待,如果不可见就继续等待直到超过规定的时间后,报超时异常;

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("kw")));

element.sendKeys("自动化测试!");

}catch(Exception e) {

e.printStackTrace();

}long overTime =System.currentTimeMillis();

System.out.println("等待时间:"+(overTime-startTime)/1000+"秒");

}

如果在设置时间5s内找到元素则执行通过,如果未找到元素则抛异常TimeoutException

a0dc7af9a49d1d7bab7c46b2951721f6.png

三、显式等待中ExpectedConditions 用法说明

//程序一共等待5s,默认0.5秒检查一次元素是否加载完成

WebDriverWait wait = new WebDriverWait(driver, 5);//until方法,返回一个Boolean类型,判断元素现在是否存在在页面上。locator的元素如果可见就停止等待,如果不可见就继续等待直到超过规定的时间后,报超时异常

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("w")));

1.判断当前页面的title是否精确等于预期

titleIs( String title)

2.判断当前页面的title是否包含预期字符串

titleContains( String title)

3.判断当前页面的url是否精确等于预期

urlToBe( String url)

4.判断当前页面的url是否包含预期字符串

urlContains( String fraction)

5.字符串正则表达式

urlMatches( String regex)

6.判断元素是否出现,只要有一个元素出现,就通过。(代表在不代表可见)

判断是否至少有 1 个元素存在于 dom 树中。举个例子,如果页面上有 n 个元素的 class 都是’column-md-3’,那么只要有 1 个元素存在,这个方法就返回 True。

presenceOfElementLocated( By locator)

7.判断元素是否出现,必须所有符合条件的元素都加载出来,才通过。

presenceOfElementsLocated( By locator)

8.如果给定元素是可见的且具有非零大小,否则为null

elementIfVisible(WebElement element)

9.判断元素是否出现。

presenceOfAllElementsLocatedBy( By locator)

10.传入类型为:locator , 判断某个元素是否可见. 可见代表元素非隐藏,并且元素宽和高都不等于 0

visibilityOfElementLocated( By locator)

11.判断某组元素是否可见

visibilityOfAllElementsLocatedBy( By locator)

12.传入类型为:element

判断某个元素是否可见. 可见代表元素非隐藏,并且元素宽和高都不等于 0

visibilityOfAllElements(final List elements)

13.判断某个元素中的text是否包含了预期的字符串;

textToBePresentInElement( WebElement element, String text)

14.判断某个元素中的 text 是否 包含 了预期的字符串

textToBePresentInElement(By locator, String text)

15.判断某个元素中的 text 是否 包含 了预期的字符串

textToBePresentInElementLocated(final By locator, final String text)

16.判断某个元素中的 value 属性是否包含 了预期的字符串

textToBePresentInElementValue( WebElement element, String text)

17.判断某个元素中的 value 属性是否包含 了预期的字符串

textToBePresentInElementValue(final By locator, final String text)

18.判断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False

frameToBeAvailableAndSwitchToIt(final String frameLocator)

19.断该 frame 是否可以 switch进去,如果可以的话,返回 True 并且 switch 进去,否则返回 False

frameToBeAvailableAndSwitchToIt(final By locator)

20.某个元素中是否不存在于dom树或不可见;

invisibilityOfElementLocated(final By locator)

21.判断带有文本的元素要么不可见,要么文本不存在于元素上

invisibilityOfElementWithText(final By locator, final String text)

22.判断某个元素中是否可见并且是enable的,这样的话才叫clickable;

elementToBeClickable(final By locator)

23.判断某个元素中是否可见并且是enable的,这样的话才叫clickable;

elementToBeClickable(final WebElement element)

24.判断一个元素是否仍在DOM中,传入WebElement对象,可以判断页面是 否刷新了。

stalenessOf(final WebElement element)

25.判断一个元素是否仍在DOM中,传入WebElement对象,可以判断页面是 否刷新了。

refreshed(final ExpectedCondition condition)

26.页面元素处于被选中状态

elementToBeSelected(WebElement element)

27.判断某个元素的选中状态是否符合预期,传入element

elementSelectionStateToBe( WebElement element, boolean selected)

28.判断某个元素是否被选中了,一般用在下拉列表;

elementToBeSelected(By locator)

29.判断某个元素的选中状态是否符合预期,传入locator

elementSelectionStateToBe(final By locator, final boolean selected)

30.判断页面上是否存在alert。

alertIsPresent()

注意: 从原文档一个个扒出来翻译的,有不对的地方还请批评指正。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值