Problem with Waits after upgrading to Appium 1.6.3

I finally upgraded from Appium 1.5.3 to 1.6.3 so I can test on iOS 10, and I believe that I have everything configured right. Using an iPhone 6/iOS 10.2 simulator the app file is installed and I can perform one simple test. I realize that I have to redo all of my locators with “XCUI”, but most of my tests are now broken over the Wait methods I use in most scripts. Example of this error- original line of code that worked in Appium 1.5.3/appium java-client 4.1.2/selenium java-client 2.53.1:

new WebDriverWait(driver, 15).until(ExpectedConditions.presenceOfElementLocated(By.id(“Submit”)));

The error in Eclipse reads:
The method(Function<? super WebDriver,V>) in the type FluentWait is not applicable for the arguments (ExpectedCondition)

One “quick fix suggestion” is displayed:
Cast argument 1 to ‘Function<? super WebDriver, V>’

If I choose the suggestion, it changes my line of code into:
new WebDriverWait(driver, 15).until((Function>? super WebDriver, V>)ExpectedConditions.presenceOfElementLocated(By.id(“Submit”)));

However, the line of code is still broken with the message:
The method until(Function<? super WebDriver,V>) from the type FluentWait refers to the missing type V.

I’m not sure what what “V” or “super” is or how to correct the problem. Would anybody know?

I’m on a Mac (10.12.2) and these are my current versions:
Appium server: 1.6.3
Appium java-client: 5.0.0-BETA4
selenium java-client: 3.2.0
Target: Simulator (iPhone 6 running iOS 10.2)

got same. problem in latest selenium - https://github.com/appium/java-client/issues/592

1 Like

Hi,

Use the latest Guava jar (version 21). That would resolve the issue. And you would be able to use the same ExpectedConditions code in your scripts. For Maven, use -

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>
1 Like

Thanks! That fixed the errors.