You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Perfecto中实例化AppiumDriver进行移动Web测试时遇类型转换错误

在Perfecto平台实例化AppiumDriver时遇到类型转换失败错误

QAF版本信息

  • Selenium - 4.11.0
  • Appium Java-Client - 8.4.0
  • QAF - 4.0.0-RC2
  • OpenJDK 17

perfecto.properties配置

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"}}

复现步骤

调用 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  

内容的提问来源于stack exchange,提问作者user3862810

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:31:09