perf: 限制商品页补采最多滑动6次 (#161)

This commit is contained in:
chengma
2026-08-11 16:10:14 +08:00
parent e96cbcaaa2
commit 47a59a2e14
2 changed files with 30 additions and 1 deletions
+1 -1
View File
@@ -794,7 +794,7 @@ class PddCollectService:
page_timeout: float = 30.0,
spec_panel_timeout: float = 10.0,
overall_timeout: float = 600.0,
max_goods_page_swipes: int = 12,
max_goods_page_swipes: int = 6,
max_spec_swipes: int = 12,
max_sku_count: int = 200,
color_poll_interval: float = 0.1,
+29
View File
@@ -1351,6 +1351,35 @@ class PddCollectParserTest(unittest.TestCase):
self.assertTrue(device.clicks)
self.assertEqual(device.swipe_panel_states[:2], [False, False])
def test_goods_metadata_default_swipe_limit_is_six(self):
pages = [
f"""<hierarchy>
<node class="androidx.viewpager.widget.ViewPager"
content-desc="测试商品标题第{index}屏内容"
bounds="[0,100][1080,500]" />
<node class="android.widget.TextView" text="已拼12000件"
bounds="[30,600][300,660]" />
<node class="androidx.recyclerview.widget.RecyclerView"
scrollable="true" bounds="[0,0][1080,1800]" />
</hierarchy>"""
for index in range(7)
]
device = GoodsMetadataScrollDevice(pages, self.spec_xml)
device.opened_url = "https://mobile.yangkeduo.com/goods.html?goods_id=123"
service = PddCollectService(
PddDeviceService(lambda _serial: device),
"USB-001",
"client-001",
sleeper=lambda _seconds: None,
)
result = service._collect_goods_details(device)
self.assertIsNone(result.shop_name)
self.assertIsNone(result.reviews.raw)
self.assertEqual(6, len(device.swipes))
self.assertEqual(6, device.page_index)
def test_cancel_during_goods_page_scroll_stops_before_spec_panel(self):
incomplete_home = self.home_xml.replace(
'<node class="android.widget.TextView" text="2356条评价" '