当前位置: 首页 > 知识库问答 >
问题:

Appium Watir Chromedriver处理命令时发生未知的服务器端错误

丌官招
2023-03-14

我的项目有以下代码:

功能/env.rb

require 'rubygems'
require 'rspec'
require 'watir'
require 'webdrivers'
require 'yaml'
require 'fileutils'
require './features/Util/Tools.rb'
require 'json'
require 'watir-scroll'
require "mini_magick"
require 'watir-screenshot-stitch'
require 'appium_lib'
require 'selenium-webdriver'

    server_url = 'http://localhost:4723/wd/hub/'

    capabilities =
    {
    platformName: 'Android',
    platformVersion: '7.0',
    deviceName: 'Android Emulator',
    browserName: 'Chrome'
    }

    $navegador = "chrome_dev_mobile"

    $appium_driver = Selenium::WebDriver.for(:remote, :desired_capabilities => capabilities, :url => server_url)

    $driver Watir::Browser.new $appium_driver

当我运行cucumber功能时,出现以下错误:

And Verificar Portal abierto                   # features/step_definitions/Home/Home_Chile/SD1_Home.rb:16
  An unknown server-side error occurred while processing the command. Original error: unknown error: Argument to isShown must be of type Element
    (Session info: chrome=69.0.3497.100)
    (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.13.6 x86_64) (Selenium::WebDriver::Error::UnknownError)
  UnknownError: An unknown server-side error occurred while processing the command. Original error: unknown error: Argument to isShown must be of type Element
    (Session info: chrome=69.0.3497.100)
    (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.13.6 x86_64)
      at errorFromMJSONWPStatusCode (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/errors.js:789:10)
      at ProxyRequestError.getActualError (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/errors.js:683:14)
      at asyncHandler$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:400:25)
      at tryCatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
      at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
      at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
      at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
      at <anonymous>
  ./features/pages/Home/Home_Page/P1_HomePage.rb:20:in `verificar_pagina'
  ./features/step_definitions/Home/Home_Chile/SD1_Home.rb:17:in `"Verificar Portal abierto"'
  features/features/Pruebas_Mobile/CL_Mobile.feature:4:in `And Verificar Portal abierto'

这是里面的代码。/features/pages/Home/Home\u Page/P1\u HomePage.rb:20

def verificar_pagina
      @caja_busqueda.wait_until_present
      if @caja_busqueda.present?
        puts "Portal abierto satisfactoriamente con: " + $navegador
      end
  end

手机浏览器打开我的URL,然后出现此错误。请我尝试一切,我接受建议

我手动设置了appium chromedriver路径,并很好地使用了它。查看appium日志将显示以下详细信息:

[JSONWP Proxy] Got response with status 200: {"sessionId":"d8b3f057fdc1e6e20a0007f9ed920514","status":13,"value":{"message":"unknown error: Argument to isShown must be of type Element\n  (Session info: chrome=69.0.3497.100)\n  (Driver info: chromedriver=2.43.600229 (3fae4d0cda5334b4f533bede5a4787f7b832d052),platform=Mac OS X 10.13.6 x86_64)"}}
[W3C] Encountered internal error running command: ProxyRequestError: Could not proxy command to remote server. Original error: The request to /wd/hub/session/3345408e-82f9-4f63-b6ec-f82998806f47/execute has failed
[W3C]     at JWProxy.proxy$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/jsonwp-proxy/proxy.js:182:13)
[W3C]     at tryCatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[W3C]     at GeneratorFunctionPrototype.invoke [as _invoke] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[W3C]     at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[W3C]     at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[W3C]     at 
[MJSONWP] Matched JSONWP error code 13 to UnknownError
[HTTP] <-- POST /wd/hub/session/3345408e-82f9-4f63-b6ec-f82998806f47/execute/sync 500 110 ms - 1894
[HTTP] 

共有2个答案

孙泉
2023-03-14

(会话信息:chrome=69.0.3497.100)

在这个chromedriver页面上,他们说你应该为Chrome69-71v使用驱动程序2.43。更新webdriver是否解决了您的问题?不过,v2.42还应支持69版。但这里提到了一系列修复,比如:

修正了在元素可见时不等待的问题

当我通过桌面应用程序启动appium时,我也注意到了同样的iShown问题。但对我来说,解决这个问题的方法是手动下载chromedriver,并通过命令提示符启动appium,如本appium页面所述。

appium--chromedriver可执行文件/path/to/my/chromedriver

东郭宏朗
2023-03-14

我这样证明:

require 'watir'
require 'selenium-webdriver'

    server_url = 'http://localhost:4723/wd/hub/'

    capabilities =
    {
    platformName: 'Android',
    platformVersion: '7.0',
    deviceName: 'Android Emulator',
    browserName: 'chrome'
    }


    $driver = Selenium::WebDriver.for(:remote, :desired_capabilities => capabilities, :url => server_url)

    $driver.get "http://www.google.com"

它工作!!!

但是当一个投手

$appium_driver = Selenium::WebDriver.for(:remote, :desired_capabilities => capabilities, :url => server_url)
$driver = Watir::Browser.new $appium_driver

然后在我尝试与定位器交互时显示错误。

我不知道,可能是水、硒和阿皮姆之间的冲突。这是一个遗憾,因为我有一个关于Watir的整个项目,我不能在移动设备上重复使用所有这些代码。

任何建议都可以接受

 类似资料:
  • 我运行simple_test.rb,代码如下所示。iOS弯刀启动,并将值放入文本字段。但是当点击第一个按钮时。错误消息出来,即使我睡了一段时间,消息仍然是。 信息:[debug][INST]2015-11-04 09:54:53+0000 debug:从instruments获得新命令7:au.getElement('2').rect() 信息:[调试]套接字数据接收(83字节)信息:[调试]套接

  • 首先,出于某种原因,目前只有Android平板电脑才会出现这种情况。我在Android6.0到4.4的手机上试用过,效果不错。 但由于某些原因,在平板电脑上却没有。 我正试图在屏幕上找到此广告,我正在使用以下任一选项进行搜索: 或者这个: 因为有些设备的检查器中有时不显示webview。 这种方法在手机上很有效,但由于某些原因在平板电脑上有时有效有时无效,如果我在测试中使用这种方法8次,可能有效6

  • 我正在用Appium在Mac上运行我的iOS自动测试。 运行时得到以下错误: 在弄清楚这个问题时需要帮助。 谢谢…!

  • 我正在使用Appium 1.5.3(Ara)版本。 我试图打开本地应用程序,并在模拟器上执行登录操作。当我从Selenium运行代码时,模拟器成功打开,但我的应用程序没有打开并抛出一个错误:“处理命令时发生了未知的服务器端错误。原始错误:启动应用程序时发生错误。原始错误:用于启动应用程序的活动不存在或无法启动!确保它存在并且是一个可启动的活动(警告:服务器没有提供任何堆栈跟踪信息)” 我已设置的所

  • 我是的新手,并为此使用命令行。我已经准备好了在实际设备中启动应用程序(集成应用程序)的脚本,每当我在中运行脚本时,都会出现以下错误: 我也成功安装了命令,但仍然显示错误。 因此,下面是我添加的功能。 请浏览我在这里附上的appium日志的图像:appium日志 [XCUITest]错误:无法安装应用程序命令'ios-deploy--id...退出,代码为253

  • 我使用以下代码向下滚动 在设置中,我将更改为