fix: 规格面板地址入口有限下滑识别 (#271)
This commit is contained in:
@@ -544,6 +544,19 @@ def address_confirmation_xml(address: str) -> str:
|
||||
</hierarchy>"""
|
||||
|
||||
|
||||
def clipped_address_confirmation_xml(address: str) -> str:
|
||||
"""首次地址卡片被顶部裁剪时的脱敏控件树。"""
|
||||
|
||||
return address_confirmation_xml(address).replace(
|
||||
'<node text="测试用户,000****0000" bounds="[300,330][800,380]"/>',
|
||||
"",
|
||||
).replace(
|
||||
'<node package="com.xunmeng.pinduoduo" bounds="[0,0][1080,2376]">',
|
||||
'<node package="com.xunmeng.pinduoduo" scrollable="true" '
|
||||
'visible-to-user="true" bounds="[0,0][1080,2079]">',
|
||||
)
|
||||
|
||||
|
||||
def address_panel_xml(address: str) -> str:
|
||||
return f"""<hierarchy>
|
||||
<node package="com.xunmeng.pinduoduo" bounds="[0,0][1080,2376]">
|
||||
@@ -976,6 +989,25 @@ class LostFirstModifyClickAddressDevice(AddressFlowDevice):
|
||||
self.mode = "address_edit"
|
||||
|
||||
|
||||
class ClippedAddressFlowDevice(AddressFlowDevice):
|
||||
"""模拟规格面板下滑后才显示联系人和手机号。"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.swipes = []
|
||||
self.address_visible = False
|
||||
|
||||
def dump_hierarchy(self):
|
||||
if self.mode == "panel" and not self.address_visible:
|
||||
return clipped_address_confirmation_xml(self.address)
|
||||
return super().dump_hierarchy()
|
||||
|
||||
def swipe(self, x1, y1, x2, y2, duration=0.0):
|
||||
self.swipes.append((x1, y1, x2, y2, duration))
|
||||
if y2 > y1:
|
||||
self.address_visible = True
|
||||
|
||||
|
||||
class NeverOpenAddressEditDevice(AddressFlowDevice):
|
||||
"""模拟两次“修改”点击都未打开编辑页。"""
|
||||
|
||||
@@ -1897,6 +1929,24 @@ class U2PddPurchaseAdapterTest(unittest.TestCase):
|
||||
self.assertEqual(clock.sleeps.count(1.0), 5)
|
||||
adapter.close()
|
||||
|
||||
def test_address_entry_scrolls_down_once_when_contact_is_clipped(self):
|
||||
device = ClippedAddressFlowDevice()
|
||||
adapter = self._live_adapter(device, [])
|
||||
adapter.open_goods(GOODS_URL)
|
||||
adapter.select_options(
|
||||
{"color": "黑色", "size": "3XL【140-165斤】"}
|
||||
)
|
||||
|
||||
adapter.update_shipping_address("cg12")
|
||||
|
||||
self.assertEqual(len(device.swipes), 1)
|
||||
self.assertLess(device.swipes[0][1], device.swipes[0][3])
|
||||
self.assertEqual(
|
||||
device.address, "测试省测试市测试区测试路1号_cg12"
|
||||
)
|
||||
self.assertEqual(device.mode, "panel")
|
||||
adapter.close()
|
||||
|
||||
def test_multiple_addresses_modify_only_default_card(self):
|
||||
device = MultipleAddressFlowDevice(default_indexes=(0,))
|
||||
adapter = self._live_adapter(device, [])
|
||||
|
||||
Reference in New Issue
Block a user