fix: 识别带价格的纵向套餐续页 (#168)
This commit is contained in:
@@ -512,7 +512,7 @@ class HorizontalPackageDevice:
|
||||
class VerticalLongPackageDevice:
|
||||
"""模拟纵向长套餐:滑到第二屏后“套餐”标题不再出现在控件树。"""
|
||||
|
||||
packages = tuple(f"套餐{i}" for i in range(1, 11))
|
||||
packages = tuple(f"套餐{i}" for i in range(1, 17))
|
||||
|
||||
def __init__(self):
|
||||
self.page = 0
|
||||
@@ -528,14 +528,15 @@ class VerticalLongPackageDevice:
|
||||
<node text="款式" bounds="[36,720][180,780]" />
|
||||
<node text="口罩款" clickable="true" selected="true"
|
||||
bounds="[36,800][300,900]" />
|
||||
<node text="套餐(10)" bounds="[36,980][240,1040]" />
|
||||
<node text="套餐(16)" bounds="[36,980][240,1040]" />
|
||||
"""
|
||||
options = []
|
||||
for index, text in enumerate(visible):
|
||||
top = 1080 + index * 210
|
||||
right = 500 if self.page == 0 else 1015
|
||||
options.append(
|
||||
f'<node text="{text}" clickable="true" '
|
||||
f'bounds="[36,{top}][500,{top + 150}]" />'
|
||||
f'<node text="{text} ¥5.69" clickable="true" '
|
||||
f'bounds="[36,{top}][{right},{top + 150}]" />'
|
||||
)
|
||||
return f"""<hierarchy>
|
||||
<node bounds="[0,0][1080,2340]">
|
||||
@@ -544,6 +545,8 @@ class VerticalLongPackageDevice:
|
||||
<node text="已选:套餐1" bounds="[36,660][500,710]" />
|
||||
{headings}
|
||||
{''.join(options)}
|
||||
<node text="券后 ¥5.69" clickable="true"
|
||||
bounds="[36,1880][300,1940]" />
|
||||
<node text="增加数量" clickable="true"
|
||||
bounds="[36,1950][220,2050]" />
|
||||
<node text="提交订单" clickable="true"
|
||||
@@ -557,7 +560,7 @@ class VerticalLongPackageDevice:
|
||||
if abs(y2 - y1) <= abs(x2 - x1):
|
||||
return
|
||||
if y1 > y2:
|
||||
self.page = min(self.page + 1, 2)
|
||||
self.page = min(self.page + 1, 4)
|
||||
else:
|
||||
self.page = max(self.page - 1, 0)
|
||||
|
||||
@@ -1323,13 +1326,15 @@ class PddCollectParserTest(unittest.TestCase):
|
||||
result = service._collect_size_dimension(device)
|
||||
|
||||
self.assertIsNotNone(result)
|
||||
self.assertEqual(result.name, "套餐(10)")
|
||||
self.assertEqual(result.name, "套餐(16)")
|
||||
self.assertEqual(
|
||||
[value.text for value in result.values],
|
||||
list(device.packages),
|
||||
)
|
||||
self.assertNotIn("增加数量", [value.text for value in result.values])
|
||||
self.assertNotIn("提交订单", [value.text for value in result.values])
|
||||
self.assertNotIn("券后", [value.text for value in result.values])
|
||||
self.assertTrue(all("¥" not in value.text for value in result.values))
|
||||
self.assertEqual(device.clicks, [])
|
||||
self.assertTrue(
|
||||
all(abs(y2 - y1) > abs(x2 - x1) for x1, y1, x2, y2, _ in device.swipes)
|
||||
|
||||
Reference in New Issue
Block a user