fix: 增强双微信选择器识别 (#263)

This commit is contained in:
chengma
2026-08-18 10:11:08 +08:00
parent 9f6705a24c
commit 2a0c17ae30
3 changed files with 139 additions and 36 deletions
@@ -349,6 +349,69 @@ class PddU2PurchaseReconcileAdapterTest(unittest.TestCase):
self.assertEqual(device.app_start_calls, 0)
self.assertEqual(device.app_current_calls, 1)
def test_mixed_package_chooser_with_duplicate_accessibility_values_closes(self):
chooser_over_pdd = (
'<hierarchy>'
'<node package="com.xunmeng.pinduoduo" text="页面加载中" />'
'<node package="com.xunmeng.pinduoduo" text="" />'
'<node package="com.xunmeng.pinduoduo" text="" />'
'<node package="android" text="选择要使用的应用" '
'content-desc="选择要使用的应用" />'
'<node package="com.tencent.mm" text="微信" '
'content-desc="微信" />'
'<node package="com.tencent.mm" text="微信 2" />'
'</hierarchy>'
)
device = TransitionDevice(
[chooser_over_pdd, xml_detail("待付款")],
current_package="android",
current_activity="com.android.internal.app.ChooserActivity",
)
clock = FakeClock()
adapter = U2PddPurchaseReconcileAdapter(
"serial",
device_service=FakeDeviceService(device),
settle_seconds=1,
transition_timeout_seconds=30,
monotonic=clock.monotonic,
sleep=clock.sleep,
)
adapter._open_unpaid_orders(device)
self.assertEqual(device.back_calls, 1)
self.assertEqual(device.app_start_calls, 0)
self.assertEqual(device.app_current_calls, 1)
def test_android_resolver_package_and_title_variant_are_supported(self):
resolver = (
'<hierarchy>'
'<node package="com.android.intentresolver" '
'text="使用以下应用打开" />'
'<node package="com.tencent.mm" text="微信" />'
'<node package="com.tencent.mm" text="微信分身" />'
'</hierarchy>'
)
device = TransitionDevice(
[resolver, xml_detail("待付款")],
current_package="com.android.intentresolver",
current_activity="com.android.intentresolver.ResolverActivity",
)
clock = FakeClock()
adapter = U2PddPurchaseReconcileAdapter(
"serial",
device_service=FakeDeviceService(device),
settle_seconds=1,
transition_timeout_seconds=30,
monotonic=clock.monotonic,
sleep=clock.sleep,
)
adapter._open_unpaid_orders(device)
self.assertEqual(device.back_calls, 1)
self.assertEqual(device.app_start_calls, 0)
def test_android_wechat_chooser_stops_when_one_back_does_not_close_it(self):
device = TransitionDevice(
[xml_android_wechat_chooser(), xml_android_wechat_chooser()],