Lxh0619 2023-07-17 13:32 采纳率: 100%
浏览 30
已结题

关于#python#的问题:学习移动测试,在Appium遇到的小问题2

学习移动测试appium基本操作遇到的问题。
很简单的一个过程:就是通过代码控制了模拟器,进入手机设置页面,点击了“显示”,然后关闭当前APP,停止driver。
driver_01.terminate_app('com.android.settings')应该是这条有问题,报错里提到:

UnknownError: An unknown server-side error occurred while processing the command. Original error: 'com.android.settings' is still running after 500ms timeout

不明白这个报错什么意思,怎么解决。
因为close_app()弃用了,受高人指点后使用了terminate_app,之前运行都没问题,这次不知道为什么报错了,o(╥﹏╥)o
感谢解答!

下面是写的代码:


from appium import webdriver
from appium.webdriver.common.appiumby import By
import time

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1.2'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver_01 = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities =desired_caps )

time.sleep(3)

driver_01.find_element(By.XPATH, "//*[@text = '显示']").click()   # 点击设置页面里的显示。

time.sleep(3)

driver_01.terminate_app('com.android.settings')
time.sleep(3)
driver_01.quit()

报错如下:

Traceback (most recent call last):
  File "E:\env\Appium\Lib\site-packages\appium\webdriver\extensions\applications.py", line 196, in terminate_app
    return self.assert_extension_exists(ext_name).execute_script(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\env\Appium\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 500, in execute_script
    return self.execute(command, {"script": script, "args": converted_args})["value"]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\env\Appium\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "E:\env\Appium\Lib\site-packages\appium\webdriver\errorhandler.py", line 122, in check_response
    raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace))
selenium.common.exceptions.UnknownMethodException: Message: Unknown mobile command "terminateApp". Only shell,execEmuConsoleCommand,dragGesture,flingGesture,doubleClickGesture,longClickGesture,pinchCloseGesture,pinchOpenGesture,swipeGesture,scrollGesture,scrollBackTo,scroll,viewportScreenshot,viewportRect,deepLink,startLogsBroadcast,stopLogsBroadcast,acceptAlert,dismissAlert,batteryInfo,deviceInfo,getDeviceTime,changePermissions,getPermissions,performEditorAction,startScreenStreaming,stopScreenStreaming,getNotifications,listSms,type,sensorSet,deleteFile,clearApp,startActivity,startService,stopService,broadcast,getContexts,installMultipleApks,unlock commands are supported.
Stacktrace:
UnknownCommandError: Unknown mobile command "terminateApp". Only shell,execEmuConsoleCommand,dragGesture,flingGesture,doubleClickGesture,longClickGesture,pinchCloseGesture,pinchOpenGesture,swipeGesture,scrollGesture,scrollBackTo,scroll,viewportScreenshot,viewportRect,deepLink,startLogsBroadcast,stopLogsBroadcast,acceptAlert,dismissAlert,batteryInfo,deviceInfo,getDeviceTime,changePermissions,getPermissions,performEditorAction,startScreenStreaming,stopScreenStreaming,getNotifications,listSms,type,sensorSet,deleteFile,clearApp,startActivity,startService,stopService,broadcast,getContexts,installMultipleApks,unlock commands are supported.
    at AndroidUiautomator2Driver.executeMobile (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\general.js:175:11)
    at AndroidUiautomator2Driver.execute (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-android-driver\lib\commands\execute.js:11:23)
    at commandExecutor (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\basedriver\driver.js:335:9)
    at C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\async-lock\lib\index.js:146:12
    at AsyncLock._promiseTry (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\async-lock\lib\index.js:280:31)
    at exec (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\async-lock\lib\index.js:145:9)
    at AsyncLock.acquire (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\async-lock\lib\index.js:162:3)
    at AndroidUiautomator2Driver.executeCommand (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\basedriver\driver.js:348:39)
    at AppiumDriver.executeCommand (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\lib\appium.js:563:36)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at asyncHandler (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:297:21)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "E:\python项目\Appium\test del.py", line 18, in <module>
    driver_01.terminate_app('com.android.settings')
  File "E:\env\Appium\Lib\site-packages\appium\webdriver\extensions\applications.py", line 209, in terminate_app
    return self.mark_extension_absence(ext_name).execute(Command.TERMINATE_APP, data)['value']
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\env\Appium\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "E:\env\Appium\Lib\site-packages\appium\webdriver\errorhandler.py", line 122, in check_response
    raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace))
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: 'com.android.settings' is still running after 500ms timeout
Stacktrace:
UnknownError: An unknown server-side error occurred while processing the command. Original error: 'com.android.settings' is still running after 500ms timeout
    at getResponseForW3CError (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9)
    at asyncHandler (C:\Users\47089\AppData\Local\Programs\Appium Server GUI\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:380:37)


  • 写回答

1条回答 默认 最新

  • winx96 2023-07-17 14:09
    关注

    好像就是我给你说的用,terminate_app。
    你可以尝试用script方法执行am force-stop命令
    driver.execute_script('mobile: shell', {'command': 'am force-stop com.android.settings'})

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 已采纳回答 7月21日
  • 修改了问题 7月17日
  • 创建了问题 7月17日

悬赏问题

  • ¥15 keil5在调用函数时候发生错误
  • ¥15 用matlab或python实现多个表格合并单元格
  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书