Files
xst 2aca405267 refactor(pages): PO 层框架化 — 细粒度操作 + 显式等待 + 消除静默吞异常
DriverFreightFlowPage (APP):
- 流程方法拆为单一职责的细粒度操作(open_freight_tab/fill_quantity/upload_photo_from_album/...),
  流程方法仅做编排,公共 API 不变,用例零改动
- 移除全部 implicitly_wait 全局副作用,每步显式等待目标元素
- 容错点击(已知晓/确定)改为 _tap_by_text_if_present,跳过时记录 warning

FreightAccountingPage (Web):
- _go/_click_search 改显式等待(搜索框出现/列表数据行或空态),替代固定 2s/1s sleep
- 表格等待升级为 td:visible,避开 vxe-table 固定列隐藏占位单元格
- 点击行操作按钮后显式等待弹窗出现,替代固定 800ms
- 车队长下拉选择改显式等待下拉项渲染
- 可选弹窗操作统一收敛到 _try_click,跳过时记录 warning;关键确认按钮保持严格

两条 E2E 用例在真实环境回归通过(TC-D2S-001 116s / TC-D2S-002 112s)。
2026-09-02 11:59:46 +08:00

95 lines
20 KiB
XML

<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="1" failures="0" skipped="0" tests="1" time="8.465" timestamp="2026-07-29T08:38:25.438288+08:00" hostname="Y8126"><testcase classname="cross_end.tests.test_driver_to_settlement.TestDriverToSettlement" name="test_driver_to_settlement_full_flow" time="8.007"><error message="failed on setup with &quot;selenium.common.exceptions.WebDriverException: Message: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output: &#13;&#10;Exception occurred while executing 'start-activity':&#13;&#10;java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231&#13;&#10;&#09;at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)&#13;&#10;&#09;at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)&#13;&#10;&#09;at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)&#13;&#10;&#09;at android.os.ShellCommand.exec(ShellCommand.java:38)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)&#13;&#10;&#09;at android.os.Binder.shellCommand(Binder.java:1183)&#13;&#10;&#09;at android.os.Binder.onTransact(Binder.java:961)&#13;&#10;&#09;at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)&#13;&#10;&#09;at android.os.Binder.execTransactInternal(Binder.java:1478)&#13;&#10;&#09;at android.os.Binder.execTransact(Binder.java:1418)&#13;&#10;&#10;Stacktrace:&#10;UnknownError: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output: &#13;&#10;Exception occurred while executing 'start-activity':&#13;&#10;java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231&#13;&#10;&#09;at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)&#13;&#10;&#09;at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)&#13;&#10;&#09;at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)&#13;&#10;&#09;at android.os.ShellCommand.exec(ShellCommand.java:38)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)&#13;&#10;&#09;at android.os.Binder.shellCommand(Binder.java:1183)&#13;&#10;&#09;at android.os.Binder.onTransact(Binder.java:961)&#13;&#10;&#09;at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)&#13;&#10;&#09;at android.os.Binder.execTransactInternal(Binder.java:1478)&#13;&#10;&#09;at android.os.Binder.execTransact(Binder.java:1418)&#13;&#10;&#10; at getResponseForW3CError (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\errors.js:846:36)&#10; at asyncHandler (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\protocol.js:485:77)&#10; at process.processTicksAndRejections (node:internal/process/task_queues:104:5)&#10;The above error is caused by&#10;Error: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output: &#13;&#10;Exception occurred while executing 'start-activity':&#13;&#10;java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231&#13;&#10;&#09;at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)&#13;&#10;&#09;at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)&#13;&#10;&#09;at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)&#13;&#10;&#09;at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)&#13;&#10;&#09;at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)&#13;&#10;&#09;at android.os.ShellCommand.exec(ShellCommand.java:38)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)&#13;&#10;&#09;at android.os.Binder.shellCommand(Binder.java:1183)&#13;&#10;&#09;at android.os.Binder.onTransact(Binder.java:961)&#13;&#10;&#09;at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)&#13;&#10;&#09;at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)&#13;&#10;&#09;at android.os.Binder.execTransactInternal(Binder.java:1478)&#13;&#10;&#09;at android.os.Binder.execTransact(Binder.java:1418)&#13;&#10;&#10; at ADB.startApp (C:\Users\23184\.appium\node_modules\appium-uiautomator2-driver\node_modules\appium-adb\build\lib\tools\app-commands.js:615:15)&#10; at process.processTicksAndRejections (node:internal/process/task_queues:104:5)&#10; at async AndroidUiautomator2Driver.ensureAppStarts (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/commands/aut.js:100:5)&#10; at async AndroidUiautomator2Driver.performPostExecSetup [as performSessionPostExecSetup] (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/uiautomator2-server/session.js:187:9)&#10; at async AndroidUiautomator2Driver.startSession [as startUiAutomator2Session] (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/uiautomator2-server/session.js:245:5)&#10; at async AndroidUiautomator2Driver.createSession (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/driver.js:295:28)&#10; at async AppiumDriver.createSession (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:271:44)&#10; at async runCommandPromise (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\basedriver\driver.js:119:24)&#10; at async AppiumDriver.executeCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\basedriver\driver.js:162:15)&#10; at async defaultBehavior (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:582:24)&#10; at async AppiumDriver.executeWrappedCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:694:22)&#10; at async AppiumDriver.executeCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:598:21)&#10; at async asyncHandler (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\protocol.js:401:25)&quot;">tests\cross_end\conftest.py:98: in app_driver
d = create_driver(cfg, platform="android")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests\app\_shared.py:46: in create_driver
return webdriver.Remote(appium_host, options=options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Python312\Lib\site-packages\appium\webdriver\webdriver.py:251: in __init__
super().__init__(
D:\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:300: in __init__
self.start_session(capabilities)
D:\Python\Python312\Lib\site-packages\appium\webdriver\webdriver.py:345: in start_session
response = self.execute(RemoteCommand.NEW_SESSION, w3c_caps)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:492: in execute
self.error_handler.check_response(response)
D:\Python\Python312\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: in check_response
raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output:
E Exception occurred while executing 'start-activity':
E java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231
E at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)
E at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)
E at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)
E at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)
E at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)
E at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)
E at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)
E at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
E at android.os.ShellCommand.exec(ShellCommand.java:38)
E at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)
E at android.os.Binder.shellCommand(Binder.java:1183)
E at android.os.Binder.onTransact(Binder.java:961)
E at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)
E at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)
E at android.os.Binder.execTransactInternal(Binder.java:1478)
E at android.os.Binder.execTransact(Binder.java:1418)
E
E Stacktrace:
E UnknownError: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output:
E Exception occurred while executing 'start-activity':
E java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231
E at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)
E at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)
E at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)
E at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)
E at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)
E at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)
E at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)
E at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
E at android.os.ShellCommand.exec(ShellCommand.java:38)
E at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)
E at android.os.Binder.shellCommand(Binder.java:1183)
E at android.os.Binder.onTransact(Binder.java:961)
E at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)
E at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)
E at android.os.Binder.execTransactInternal(Binder.java:1478)
E at android.os.Binder.execTransact(Binder.java:1418)
E
E at getResponseForW3CError (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\errors.js:846:36)
E at asyncHandler (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\protocol.js:485:77)
E at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
E The above error is caused by
E Error: Cannot start the 'com.arpa.ynchenggangdriver' application. Consider checking the driver's troubleshooting documentation. Original error: Error executing adbExec. Original error: 'Command ''C:\Users\23184\AppData\Local\Android\Sdk\platform-tools\adb.exe' -P 5037 -s emulator-5554 shell am start-activity -W -n com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000' exited with code 255'; Command output:
E Exception occurred while executing 'start-activity':
E java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.arpa.ynchenggangdriver/com.arpa.ntocc.MainActivity } from null (pid=6150, uid=2000) not exported from uid 10231
E at com.android.server.wm.ActivityTaskSupervisor.checkStartAnyActivityPermission(ActivityTaskSupervisor.java:1263)
E at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1220)
E at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:855)
E at com.android.server.wm.ActivityTaskManagerService.startActivityAndWait(ActivityTaskManagerService.java:1621)
E at com.android.server.am.ActivityManagerService.startActivityAndWait(ActivityManagerService.java:3316)
E at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:875)
E at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:261)
E at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97)
E at android.os.ShellCommand.exec(ShellCommand.java:38)
E at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:10466)
E at android.os.Binder.shellCommand(Binder.java:1183)
E at android.os.Binder.onTransact(Binder.java:961)
E at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:5853)
E at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2768)
E at android.os.Binder.execTransactInternal(Binder.java:1478)
E at android.os.Binder.execTransact(Binder.java:1418)
E
E at ADB.startApp (C:\Users\23184\.appium\node_modules\appium-uiautomator2-driver\node_modules\appium-adb\build\lib\tools\app-commands.js:615:15)
E at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
E at async AndroidUiautomator2Driver.ensureAppStarts (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/commands/aut.js:100:5)
E at async AndroidUiautomator2Driver.performPostExecSetup [as performSessionPostExecSetup] (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/uiautomator2-server/session.js:187:9)
E at async AndroidUiautomator2Driver.startSession [as startUiAutomator2Session] (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/uiautomator2-server/session.js:245:5)
E at async AndroidUiautomator2Driver.createSession (file:///C:/Users/23184/.appium/node_modules/appium-uiautomator2-driver/build/lib/driver.js:295:28)
E at async AppiumDriver.createSession (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:271:44)
E at async runCommandPromise (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\basedriver\driver.js:119:24)
E at async AppiumDriver.executeCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\basedriver\driver.js:162:15)
E at async defaultBehavior (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:582:24)
E at async AppiumDriver.executeWrappedCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:694:22)
E at async AppiumDriver.executeCommand (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\build\lib\appium.js:598:21)
E at async asyncHandler (C:\Users\23184\AppData\Roaming\npm\node_modules\appium\node_modules\@appium\base-driver\build\lib\protocol\protocol.js:401:25)</error></testcase></testsuite></testsuites>