一、当我们在刷新页面操作时,页面还未加载完成或者说页面正处于加载中的状态,这个时候我们可能能够定位到元素(也可能无法定位到),但无法进行操作,因此我们需要设置一定的等待时间,等待页面完全加载完成后才进行元素定位点击操作。(网络延迟、selenium操作元素时过快等都有可能出现元素无法定位)

 

二、selenium WebDriver 中有两种等待方式:隐式等待、显式等待。

 

三、隐式等待。

1、当我们告诉driver需要隐式等待时,就是说它会等待所有元素,不会只等待单个元素。

2、在创建driver时,为浏览器对象设置一个隐式等待时间。如果如果元素不能立即可用就等待一段时间,直到拿到某个元素为止。

3、在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内不断的刷新页面去寻找我们需要的元素。

4、隐式等待的默认等待时间为0。

5、如果我们设置等待时间为3秒,那么WebDriver 就会先等待3秒,在3秒内拿到可用元素后就会立即执行操作,如果还不能在页面上找到可用元素,就会抛出异常。

6、不要设置等待时长太长,这样会会影响执行效率。

 

四、显式等待

1、如果有元素需要很长时间才能加载可用,就可以使用显式等待。

2、针对特定元素,为某一元素定制的。让元素等待直到满足某个条件才执行。

3、显式等待时我们可以定义的,等待某个条件发生,然后再继续执行代码。

WebDriver提供的期望条件有:

alertIsPresent

elementSelectionStateToBe

elementToBeClickable  元素可以点击

elementToBeSelected  元素可以选择

frameToBeAvailableAndSwitch Tolt

invisibilityOfElementLocated

presenceOfElementLocated

textToBePresentInElementLocated

textToBePresentInElementValue

titleContains

titleIs

visibilityOfElementLocated

 所有期望条件有:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html

 

注意:

1、隐式等待不要和显式等待一起混合使用,这样会导致等待时长不可控。

2、显式等待和隐式等待时selenium WebDriver提供的。

3、在前面的演示章节中我们用到了“Thread.sleep(2000)”,这是java提供的强制等待,表示不管条件是否满足,都会等待2秒后再继续执行其它操作。

 

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴可以相互一起学习讨论。

posted on 2019-05-14 09:23  时光以北暮南城  阅读(410)  评论(0编辑  收藏  举报