Qmetry Error: Underlying driver is an QAFExtendedWebDriver. This step requires an AndroidDriver

132 views Asked by At

Using Qmetry framework to execute touch actions on android mobile using appium . Facing issue with incorrect driver initialization.

Issue

I am trying to set android driver as driver to perform touch actions. But during execution Qmetry initializing incorrect driver (error saying 'Underlying driver is an QAFExtendedWebDriver').Looks like its initializing the default driver provided by qmetry framework.

Set below capabilities in application.properties file with other required capabilities:

driver.name=appiumRemoteDriver
appium.capabilities.driverClass=io.appium.java_client.android.AndroidDriver;

Touch action function:

new TouchAction(driver)
            .press(pointOptionStart)
                    // a bit more reliable when we add small wait
                    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(PRESS_TIME)))
                    .moveTo(pointOptionEnd)
                    .release().perform();

ERROR on console:

ERROR: Underlying driver is an QAFExtendedWebDriver. This step requires an AndroidDriver. ????? swipeElementAndroid(): TouchAction FAILED Underlying driver is an QAFExtendedWebDriver. This step requires an AndroidDriver.

It will be great help if any one can provide the solution for this issue.

1

There are 1 answers

1
user861594 On BEST ANSWER

Driver class is only used when you are not using remote driver. Remove remote from your driver name. Also ; is list separator so remove ; from driver class capability value.

driver.name=appiumDriver
appium.capabilities.driverClass=io.appium.java_client.android.AndroidDriver

With above changes below code should work:

AppiumDriver driver = (AppiumDriver) new WebDriverTestBase().getDriver().getUnderLayingDriver();
new TouchAction(driver)
            .press(pointOptionStart)
                    // a bit more reliable when we add small wait
                    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(PRESS_TIME)))
                    .moveTo(pointOptionEnd)
                    .release().perform();

You can refer appium specific utility methods/steps.