Appium implicit wait is automatically set to 0

Suddenly my appium waits are set to 0 by default even though I have driver.no_wait set.
Is anyone else seeing this issue?

You can restore the old default value with set_wait 30

I was using 1.3.7 and appium lib 7.0.0
Downgrading to lib 6.0.0 fixes the issue.

So the issue is, we are not using driver.no_wait so that we can rely on the default 30 sec wait. When i got upgraded to lib 7.0.0 the implicit wait now defaults to 0.

Is this an intentional change?
We will need to use set_wait(30) going forward to be able to use default 30 secs implicit wait?

@bootstraponline
Someone helped me find it on github. Thanks!

Implicit and explicit waits don’t work well together (especially when the implicit wait is longer than the explicit). This has been a source of frustration from end users. It also differed from the appium ruby console (ARC). ARC uses an implicit wait of 0. This was another source of confusion. I documented it in the v7 release notes .

Is this an intentional change?
We will need to use set_wait(30) going forward to be able to use default 30 secs implicit wait?

Yes, set_wait(30) is required going forward. You can also set this via the default wait appium_lib option during driver initialization (or via appium.txt).

Thanks @bootstraponline.
this answers it.

Will this enable us to use driver.wait(15){find_element_by_name}
values passed in wait() could be changed?

wait(15) is an explicit wait, that still defaults to 30 if you omit the number (ex: wait { … } instead of wait(15) { … }). This works properly with an implicit wait of 0. If the implicit wait was 30 then an explicit wait lower than that could be problematic. The sleep timeout in wait can be any number.

1 Like

The best thing is to only use explicit waits.

1 Like