在 Browserstack 跨移动测试平台中执行时并行执行期间发生 WebDriver 异常
Posted
技术标签:
【中文标题】在 Browserstack 跨移动测试平台中执行时并行执行期间发生 WebDriver 异常【英文标题】:WebDriver exceptions are occurring during parallel Execution when executing in Browserstack cross mobile testing platform 【发布时间】:2021-01-01 10:21:37 【问题描述】:org.openqa.selenium.WebDriverException:会话未启动或终止(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:0 毫秒 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'LAPTOP-AI87CII4',ip:'192.168.43.101',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8 .0_261' 驱动信息:io.appium.java_client.android.AndroidDriver 功能 64 位:假,acceptSslCert:假,acceptSslCerts:假,adbExecTimeout:120000,appActivity:biz.tikme.activities.Splash ...,appPackage:biz.tikme,autoGrantPermissions:真,automationName:uiautomator2,browserstack.is_hub_canary:假, browserstack.minOSVersion: 4.4, bundleID: biz.tikme, bundleId: biz.tikme, chromeOptions: w3c: false, customFullReset: true, detected_language: selenium/3.141.59 (java win..., device: google pixel 3 , deviceName: Android, enablePerformanceLogging: false, javascriptEnabled: true, mobile: browser: mobile, version: Google Pixel 3-9.0, nativeWebScreenshot: true, newCommandTimeout: 0, new_bucketing: true, noReset: false, 方向: PORTRAIT, orig_os : android, osVersion: 9.0, os_version: 9.0, platform: ANDROID, platformName: Android, projectName: TikMe-HyperLocalAutomationP..., realMobile: true, systemPort: 8201, udid: 88MX01NAS, uiautomator2ServerLaunchTimeout: 60000, version: 会话 ID:44f96cd0f831bf10a228bfa2c6a46876d1278e15 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) 在 org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40) 在 org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80) 在 org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 io.appium.java_client.InteractsWithApps.closeApp(InteractsWithApps.java:140) 在 com.tikme.hyperlocal.mobileautomation.base.Base.closeapp(Base.java:98) 在 com.tikme.hyperlocal.mobileautomation.step.Hooks.quit(Hooks.java:82)
``` *** if(new GlobalParams().getmedium().equals("BrowserStack"))
int i = 0;
while(i<3)
try
Thread.sleep(2000);
new TestUtils().log().info("going to reset the app");
manager.getDriver().resetApp(); // This is the method which throws the exception
new TestUtils().log().info("app is resetted successfully");
break;
catch(Exception e)
new TestUtils().log().fatal("tried"+" "+i+" "+"time to reset the app but failed.");
i++;
new Base().closeapp();
```
【问题讨论】:
【参考方案1】:如果 resetApp() 不起作用,您可以尝试将其添加为 DesiredCapabilities 对象的功能
DesiredCapabilities capabilities = DesiredCapabilities.android();
capabilities.setCapability(MobileCapabilityType.NO_RESET, false);
capabilities.setCapability(MobileCapabilityType.FULL_RESET, true);
这两行将重置您的应用,这里是文档http://appium.io/docs/en/writing-running-appium/other/reset-strategies/#reset-strategies
【讨论】:
其实我是用browserstack做移动测试的,browserstack不支持以上两个功能。这就是为什么我一直在使用 resetApp 方法。有时它会在 resetApp 行显示错误,有时在 driver.quit() 方法中显示错误。 但是,如果他们确保您在每次会话后重置和清洁设备,您为什么要自己重置呢? browserstack.com/app-automate/capabilities - Appium 的完全重置功能将不起作用,因为我们总是在每次会话结束时卸载应用并清理设备以上是关于在 Browserstack 跨移动测试平台中执行时并行执行期间发生 WebDriver 异常的主要内容,如果未能解决你的问题,请参考以下文章
是否可以执行长按操作以访问 BrowserStack 中的应用程序菜单?