移动自动化与 appium -- Selenium 驱动程序

Posted

技术标签:

【中文标题】移动自动化与 appium -- Selenium 驱动程序【英文标题】:Mobile Automation with appium -- Selenium driver 【发布时间】:2020-10-05 12:50:10 【问题描述】:

我正在尝试在移动设备中执行测试,但出现下一个错误

线程“main”中的异常 org.openqa.selenium.SessionNotCreatedException:无法创建新的 远程会话。请检查服务器日志以获取更多详细信息。原版的 错误:处理时发生未知的服务器端错误 命令。原始错误:没有找到可以自动化的 Chromedriver 铬'83.0.4103'。您也可以尝试启用自动化 chromedrivers 下载服务器功能。看 https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 有关更多详细信息构建信息:版本:'3.141.59',修订: 'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机: 'DESKTOP-3EOJTAA',ip:'169.254.34.1',os.name:'Windows 10',os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91' 驱动信息: driver.version:androidDriver 远程堆栈跟踪:UnknownError:An 处理命令时发生未知的服务器端错误。 原始错误:没有找到可以自动化 Chrome 的 Chromedriver '83.0.4103'。您也可以尝试启用自动 chromedrivers 下载服务器功能。看 https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 更多细节 在 getResponseForW3CError (C:\Users\wilso\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9) 在 asyncHandler (C:\Users\wilso\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:392:37) 构建信息:版本:'3.141.59',修订:'e82be7d358',时间: '2018-11-14T08:17:03' 系统信息:主机:'DESKTOP-3EOJTAA',ip: '169.254.34.1',os.name:'Windows 10',os.arch:'amd64',os.version: '10.0', java.version: '1.8.0_91' 驱动程序信息: driver.version: AndroidDriver 在 io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208) 在 io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217) 在 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:42) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) 在 io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:84) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:94) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:95) 在 Appium.com.appium.utilities.Configuration.initConfiguration(Configuration.java:31) 在 Appium.com.appium.principal.Principal.testSeventhWithBrowser(Principal.java:117) 在 Appium.com.appium.principal.Principal.main(Principal.java:29) 引起:java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186) ... 15 更多原因:org.openqa.selenium.WebDriverException: An 处理命令时发生未知的服务器端错误。 原始错误:没有找到可以自动化 Chrome 的 Chromedriver '83.0.4103'。您也可以尝试启用自动 chromedrivers 下载服务器功能。看 https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 有关更多详细信息构建信息:版本:'3.141.59',修订: 'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机: 'DESKTOP-3EOJTAA',ip:'169.254.34.1',os.name:'Windows 10',os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_91' 驱动信息: driver.version:AndroidDriver 远程堆栈跟踪:UnknownError:An 处理命令时发生未知的服务器端错误。 原始错误:没有找到可以自动化 Chrome 的 Chromedriver '83.0.4103'。您也可以尝试启用自动 chromedrivers 下载服务器功能。看 https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md 更多细节 在 getResponseForW3CError (C:\Users\wilso\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9) 在 asyncHandler (C:\Users\wilso\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:392:37) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 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.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62) 在 org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30) 在 org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126) 在 java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) 在 java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) 在 java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) 在 java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) 在 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) 在 java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 在 java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) 在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464) 在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128) ... 20 更多

Chrome 版本: 83.04103.101

我正在寻找解决方案,但我什么也没找到。

【问题讨论】:

【参考方案1】:

您的日志中的错误(原始错误:未找到可以自动执行 Chrome '83.0.4103' 的 Chromedriver。您也可以尝试启用自动 chromedrivers 下载服务器功能)表示您具有 chromedriver 浏览器兼容性问题,您的移动模拟器中的 chromedriver 和 chromedriver appium 的不匹配。要解决此问题,您需要按照以下步骤操作:

    下载chromedriver 83.0.4103版本,你可以在这里找到https://chromedriver.chromium.org/

    删除现有的appium chromedriver,如果Windows(C:\Users\yourUsername\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win),则位于该路径中

    复制粘贴你下载的chromedriver版本(83.0.4103)

    再次运行测试

【讨论】:

【参考方案2】:

您是否在Android Chrome上开发脚本,如果您是控制android chrome,您可以在appium中检查chrome驱动程序版本是否与您设备上的android chrome版本匹配。 appium 中的 chrome 驱动程序应该像这样存储位置:

C:\Users\xxx\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win. 

这是windows appium lcoation。将chromedriver.exe拖入CMD,即可看到驱动版本。

【讨论】:

以上是关于移动自动化与 appium -- Selenium 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

移动使用没有 Appium 的网络应用自动化?

史上最全-Appium自动化测试框架

adb常用指令与APPium环境搭建

selenium与appium怎样联系

如何通过移动 xpath 与 Appium 匹配 @text 属性和正则表达式(正则表达式)来查找元素?

appium启动手机app后怎么执行脚本