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值

运行结果

相关推荐
可涵不会debug2 小时前
C++ std::bind 实战教程:线程池、回调场景全覆盖
linux·开发语言·c++
不正经的码狗2 小时前
Java 开发环境搭建与 Eclipse 使用速通教程
java·开发语言·eclipse
小小张说故事2 小时前
pandas 读大 CSV 太慢?6 个实测提速技巧(dtype / 分块 / 引擎选择)
后端·python·pandas
yi0112 小时前
DAY17: LeetCode 139|单词拆分:从“把单词删掉”到用 DP 记录合法切口
人工智能·笔记·python·算法·leetcode·动态规划
阿钱真强道2 小时前
24 嵌入式操作系统 | 项目启动与环境准备(PyQt5 / Flask 两个“最小可跑“)
开发语言·qt·flask·架构设计·协议契约
Java的搬运工2 小时前
【无标题】
python·机器学习·docker·fastapi·模型部署·mlops·ai工程化
霸道流氓气质2 小时前
AI模型幻觉检测与抑制完全指南:从规则引擎到RAG对比的Java生产级实战
java·开发语言·人工智能
前端 贾公子2 小时前
LangChain核心组件 == 提示词(Prompts)
开发语言·c#
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
茉莉玫瑰花茶3 小时前
GO [ 并发 ]
开发语言·后端·golang