thebrowsercompany / swift-webdriver

A Swift library for communicating with WebDriver (Appium/WinAppDriver) endpoints
BSD 3-Clause "New" or "Revised" License
104 stars 3 forks source link

Leverage WebDriver built-in implicit wait #153

Closed tristanlabelle closed 4 months ago

tristanlabelle commented 4 months ago

We've been emulating implicit wait functionality by repeated requests when webdriver offers it as a built-in mechanism. Using the built-in mechanism when available has the advantage of making logs less verbose. This change preserves the repeated request emulation mechanism as a fallback.

This change aligns better with web driver concepts. We use "implicit wait timeout" instead of "default retry timeout", and make it only apply to findElement, introducing a separate "implicit interaction retry timeout" for interactions (which is not a webdriver protocol built-in functionality). The implicit wait timeout now defaults to 0 seconds, as per spec.

Individual operations still offer to specify a wait timeout, and this is implemented by temporarily changing the implicit wait timeout, since that is the only mechanism offered by webdriver.

tristanlabelle commented 4 months ago

@jeffdav good call, I updated the readme.