python中appium

错误搜集

D:\Program\Util\python.exe "D:/Program/myUtil/PyCharm 2024.3.5/plugins/python-ce/helpers/pycharm/_jb_pytest_runner.py" --target demo.py::TestAppium

Testing started at 15:51 ...

Launching pytest with arguments demo.py::TestAppium --no-header --no-summary -q in C:\Users\Administrator\PycharmProjects\pyAppium

============================= test session starts =============================

collecting ... collected 1 item

demo.py::TestAppium::test_study

======================== 1 failed, 3 warnings in 5.41s ========================

FAILED 100%

demo.py:15 (TestAppium.test_study)

self = <demo.TestAppium object at 0x0000025BC0300A50>

def test_study(self):
> self.app_do.find_element(by=AppiumBy.ID,value="")

demo.py:17:


D:\Program\Util\Lib\site-packages\selenium\webdriver\remote\webdriver.py:922: in find_element

return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})"value"

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

D:\Program\Util\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute

self.error_handler.check_response(response)


self = <appium.webdriver.errorhandler.MobileErrorHandler object at 0x0000025BC04301A0>

response = {'status': 500, 'value': '{"value":{"error":"unknown error","message":"An unknown server-side error occurred while pro...20.2\\\\node_modules\\\\appium\\\\node_modules\\\\@appium\\\\base-driver\\\\lib\\\\protocol\\\\protocol.js:487:57)"}}'}

def check_response(self, response: Dictstr, Any) -> None:

"""

https://www.w3.org/TR/webdriver/#errors

"""

payload = response.get('value', '')

if isinstance(payload, dict):

payload_dict = payload

else:

try:

payload_dict = json.loads(payload)

except (json.JSONDecodeError, TypeError):

return

if not isinstance(payload_dict, dict):

return

value = payload_dict.get('value')

if not isinstance(value, dict):

return

error = value.get('error')

if not error:

return

message = value.get('message', error)

stacktrace = value.get('stacktrace', '')

In theory, we should also be checking HTTP status codes.

Java client, for example, prints a warning if the actual `error`

value does not match to the response's HTTP status code.

exception_class: Typesel_exceptions.WebDriverException = ERROR_TO_EXC_MAPPING.get(

error, sel_exceptions.WebDriverException

)

if exception_class is sel_exceptions.WebDriverException and message:

if message == 'No such context found.':

exception_class = appium_exceptions.NoSuchContextException

elif message == 'That command could not be executed in the current context.':

exception_class = appium_exceptions.InvalidSwitchToTargetException

if exception_class is sel_exceptions.UnexpectedAlertPresentException:

raise sel_exceptions.UnexpectedAlertPresentException(

msg=message,

stacktrace=format_stacktrace(stacktrace),

alert_text=value.get('data'),

)

> raise exception_class(msg=message, stacktrace=format_stacktrace(stacktrace))

E selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Must provide a selector when finding elements

E Stacktrace:

E UnknownError: An unknown server-side error occurred while processing the command. Original error: Must provide a selector when finding elements

E at getResponseForW3CError (D:\Program\Util\nvm\nvm\v16.20.2\node_modules\appium\node_modules\@appium\base-driver\lib\protocol\errors.js:1143:9)

E at asyncHandler (D:\Program\Util\nvm\nvm\v16.20.2\node_modules\appium\node_modules\@appium\base-driver\lib\protocol\protocol.js:487:57)

D:\Program\Util\Lib\site-packages\appium\webdriver\errorhandler.py:125: WebDriverException

Process finished with exit code 1

错误分析

> self.app_do.find_element(by=AppiumBy.ID,value="")

看这里这行代码,发现忘记填写value中的id值了。

解决办法

补充value中定位的id值

android:id/icon

修改代码部分,填写id值

运行结果

相关推荐
hsjiasb44 分钟前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
丰锋ff1 小时前
3.1 Qt事件之事件处理器
开发语言·qt
多弗朗皮卡丘2 小时前
C语言梦开始的地方7:函数
c语言·开发语言
月华路2 小时前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
XLYcmy2 小时前
京东 算法实习一面 下+手撕
c++·python·llm·概率论·数据处理·训练·codebert
虎头金猫3 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
从零开始学习人工智能3 小时前
WSL2部署CUDA12+cuDNN9踩坑实录:ONNX Runtime GPU推理环境搭建全流程
python
gugucoding3 小时前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_380743873 小时前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA3 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript