无法在perfecto中实例化AppiumDriver以进行移动Web浏览器测试

问题描述 投票:0回答:1

我们正在尝试在 Perfecto 上实例化用于 Android 和 iOS 移动 Web 浏览器测试的 Appium 驱动程序。但我们收到“无法转换为类”错误。详情如下:

QAF版本

硒 - 4.11.0
Appium Java 客户端 - 8.4.0
QAF-4.0.0-RC2
OpenJDK 17

完美的属性:

driver.name=perfectoRemoteDriver
remote.server=https://.perfectomobile.com/nexperience/perfectomobile/wd/hub/fast
remote.port=80
perfecto.additional.capabilities={"perfecto:options":{"securityToken":"","javascriptEnabled":true,"openDeviceTimeout":5.0, "scriptName":"QAF test","platformName":"iOS","browserName":"Safari","automationName":"Appium"}}

重现步骤

调用 new AppiumSteps.getAppiumDriver();

预期行为

应该能够根据platformName创建AppiumDriver

实际行为

class org.openqa.selenium.remote.TracedCommandExecutor cannot be cast to class org.openqa.selenium.remote.HttpCommandExecutor (org.openqa.selenium.remote.TracedCommandExecutor and org.openqa.selenium.remote.HttpCommandExecutor are in unnamed module of loader 'app')

该问题可以在跑步者上重现吗?

  • IntelliJ

  • Maven

QAF 日志

    com.qmetry.qaf.automation.core.AutomationError: Unable to build AppiumDriver from class com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver
at .Given the user login with credential(scenarios/E2E/e2e.feature:10)
at com.qmetry.qaf.automation.step.AppiumSteps.getAppiumDriver(AppiumSteps.java:245)
at cloud.steps.IllustrationVerificationSteps.landsOnTheLoginPage(IllustrationVerificationSteps.java:50)
at cloud.steps.CommonSteps.loginWithCredential(CommonSteps.java:39)
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:150)
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:149)
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:128)
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174)
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
    Caused by: java.lang.ClassCastException: class org.openqa.selenium.remote.TracedCommandExecutor cannot be cast to class org.openqa.selenium.remote.HttpCommandExecutor (org.openqa.selenium.remote.TracedCommandExecutor and org.openqa.selenium.remote.HttpCommandExecutor are in unnamed module of loader 'app')
at com.qmetry.qaf.automation.step.AppiumSteps.getAppiumDriver(AppiumSteps.java:215)
at cloud.steps.IllustrationVerificationSteps.landsOnTheLoginPage(IllustrationVerificationSteps.java:50)
at cloud.steps.CommonSteps.loginWithCredential(CommonSteps.java:39)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at com.qmetry.qaf.automation.step.JavaStep.doExecute(JavaStep.java:150)
at com.qmetry.qaf.automation.step.BaseTestStep.execute(BaseTestStep.java:149)
at com.qmetry.qaf.automation.step.StringTestStep.execute(StringTestStep.java:128)
at com.qmetry.qaf.automation.step.client.Scenario.execute(Scenario.java:174)
at com.qmetry.qaf.automation.step.client.DataDrivenScenario.scenario(DataDrivenScenario.java:66)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
... 3 more  
browser qaf perfecto
1个回答
0
投票

尝试使用具有驱动程序类的驱动程序而不是远程驱动程序。例如:

driver.name=perfectoDriver
remote.server=https://<NAME>.perfectomobile.com/nexperience/perfectomobile/wd/hub/fast
perfecto.additional.capabilities={"driverClass" : "io.appium.java_client.ios.IOSDriver",\
        "perfecto:options":{\
        "securityToken":"<TOKEN>","javascriptEnabled":true,\
        "openDeviceTimeout":5.0, \
        "scriptName":"${current.testcase.name}",\
        "platformName":"iOS","browserName":"Safari","automationName":"Appium"}}

使用 Android 驱动程序类

io.appium.java_client.android.AndroidDriver
适用于 Android

© www.soinside.com 2019 - 2024. All rights reserved.