Skip to content

raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None playwright._impl._errors.TimeoutError: Locator.text_content: Timeout 30000ms exceeded. #282

@guoyuangy5

Description

@guoyuangy5

我按照前面issue的解决方案,加了CF的等待时间,把领游戏的区也给改成美国了,发现日志里面贴的检测到的免费游戏网址打开时404
{
"title": "Styx: Master of Shadows",
"url": "https://store.epicgames.com/en-US/p/0aa23c9aff4045d7b4b9b5ccc06b5c03"
}
2026-01-21 15:24:58 | DEBUG | services.epic_games_service:collect_epic_games:184 | Discover promotion
{
"title": "Styx: Shards of Darkness - Deluxe Edition",
"url": "https://store.epicgames.com/en-US/p/81e2a51d2be949b986993cdca25f4d7d"
}
实际地址应该是https://store.epicgames.com/zh-CN/p/styx-master-of-shadows-4d9ab3,是不是这个的问题?
附上所有日志(用户名密码已删,apikey是*)

2026-01-21 15:24:45 | DEBUG | main:deploy:108 | Starting deployment with configuration: {
"GEMINI_API_KEY": "**********",
"cache_dir": "/app/app/volumes/hcaptcha/.cache",
"challenge_dir": "/app/app/volumes/hcaptcha/.challenge",
"captcha_response_dir": "/app/app/volumes/hcaptcha/.captcha",
"ignore_request_types": [],
"ignore_request_questions": [
"Please drag the crossing to complete the lines"
],
"DISABLE_BEZIER_TRAJECTORY": true,
"EXECUTION_TIMEOUT": 300.0,
"RESPONSE_TIMEOUT": 120.0,
"RETRY_ON_FAILURE": true,
"WAIT_FOR_CHALLENGE_VIEW_TO_RENDER_MS": 1500,
"CONSTRAINT_RESPONSE_SCHEMA": true,
"CHALLENGE_CLASSIFIER_MODEL": "gemini-2.5-flash",
"IMAGE_CLASSIFIER_MODEL": "gemini-2.5-pro",
"SPATIAL_POINT_REASONER_MODEL": "gemini-2.5-pro",
"SPATIAL_PATH_REASONER_MODEL": "gemini-2.5-pro",
"IMAGE_CLASSIFIER_THINKING_BUDGET": 970,
"SPATIAL_POINT_THINKING_BUDGET": 1387,
"SPATIAL_PATH_THINKING_BUDGET": 1652,
"coordinate_grid": {
"x_line_space_num": 15,
"y_line_space_num": 20,
"color": "gray",
"adaptive_contrast": false
},
"enable_challenger_debug": false,
"ENABLE_APSCHEDULER": true,
"TASK_TIMEOUT_SECONDS": 900,
"REDIS_URL": "redis://redis:6379/0",
"CELERY_WORKER_CONCURRENCY": 1,
"CELERY_TASK_TIME_LIMIT": 1200,
"CELERY_TASK_SOFT_TIME_LIMIT": 900,
"headless": true
}
2026-01-21 15:24:45 | DEBUG | main:execute_browser_tasks:55 | Starting Epic Games collection task
2026-01-21 15:24:47 | DEBUG | main:execute_browser_tasks:69 | Browser initialized successfully
2026-01-21 15:24:47 | DEBUG | main:execute_browser_tasks:72 | Initiating Epic Games authentication
2026-01-21 15:24:51 | SUCCESS | services.epic_authorization_service:invoke:121 | Epic Games is already logged in
2026-01-21 15:24:51 | DEBUG | main:execute_browser_tasks:75 | Authentication completed
2026-01-21 15:24:51 | DEBUG | main:execute_browser_tasks:78 | Starting free games collection process
2026-01-21 15:24:58 | DEBUG | services.epic_games_service:collect_epic_games:184 | Discover promotion
{
"title": "Styx: Master of Shadows",
"url": "https://store.epicgames.com/en-US/p/0aa23c9aff4045d7b4b9b5ccc06b5c03"
}
2026-01-21 15:24:58 | DEBUG | services.epic_games_service:collect_epic_games:184 | Discover promotion
{
"title": "Styx: Shards of Darkness - Deluxe Edition",
"url": "https://store.epicgames.com/en-US/p/81e2a51d2be949b986993cdca25f4d7d"
}
2026-01-21 15:26:13 | ERROR | services.epic_games_service:collect_epic_games:195 | Locator.text_content: Timeout 30000ms exceeded.
Call log:

  • waiting for locator("//aside//button[@data-testid='purchase-cta-button']")

Traceback (most recent call last):
File "/app/app/deploy.py", line 182, in
asyncio.run(deploy())
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
File "/usr/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
self.run_forever()
File "/usr/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
self._run_once()
File "/usr/lib/python3.12/asyncio/base_events.py", line 1987, in _run_once
handle._run()
File "/usr/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/app/app/deploy.py", line 113, in deploy
await execute_browser_tasks(headless=headless)
File "/app/app/deploy.py", line 81, in execute_browser_tasks
await agent.collect_epic_games()

File "/app/app/services/epic_games_service.py", line 193, in collect_epic_games
await self.epic_games.collect_weekly_games(game_promotions)
File "/app/.venv/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 189, in async_wrapped
return await copy(fn, *args, **kwargs)
File "/app/.venv/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 111, in call
do = await self.iter(retry_state=retry_state)
File "/app/.venv/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 153, in iter
result = await action(retry_state)
File "/app/.venv/lib/python3.12/site-packages/tenacity/_utils.py", line 99, in inner
return call(*args, **kwargs)
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 418, in exc_check
raise retry_exc.reraise()
File "/app/.venv/lib/python3.12/site-packages/tenacity/init.py", line 185, in reraise
raise self.last_attempt.result()
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/app/.venv/lib/python3.12/site-packages/tenacity/asyncio/init.py", line 114, in call
result = await fn(*args, **kwargs)
File "/app/app/services/epic_games_service.py", line 374, in collect_weekly_games
if not await self.add_promotion_to_cart(self.page, urls):
File "/app/app/services/epic_games_service.py", line 273, in add_promotion_to_cart
purchase_status = await purchase_btn.text_content()
File "/app/.venv/lib/python3.12/site-packages/playwright/async_api/_generated.py", line 17603, in text_content
await self._impl_obj.text_content(timeout=timeout)
File "/app/.venv/lib/python3.12/site-packages/playwright/_impl/_locator.py", line 630, in text_content
return await self._frame.text_content(
File "/app/.venv/lib/python3.12/site-packages/playwright/_impl/_frame.py", line 648, in text_content
return await self._channel.send(
File "/app/.venv/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 69, in send
return await self._connection.wrap_api_call(
File "/app/.venv/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 558, in wrap_api_call
raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
playwright._impl._errors.TimeoutError: Locator.text_content: Timeout 30000ms exceeded.
Call log:

  • waiting for locator("//aside//button[@data-testid='purchase-cta-button']")

2026-01-21 15:26:13 | DEBUG | services.epic_games_service:collect_epic_games:201 | All tasks in the workflow have been completed
2026-01-21 15:26:13 | DEBUG | main:execute_browser_tasks:82 | Free games collection completed
2026-01-21 15:26:13 | DEBUG | main:execute_browser_tasks:85 | Cleaning up browser resources
2026-01-21 15:26:16 | DEBUG | main:execute_browser_tasks:93 | Browser tasks execution finished successfully
2026-01-21 15:26:16 | DEBUG | main:deploy:160 | Epic Games scheduler started successfully
2026-01-21 15:26:16 | DEBUG | main:deploy:161 | Current time: 2026-01-21 15:26:16 CST
2026-01-21 15:26:16 | DEBUG | main:deploy:166 | Next execution scheduled: 2026-01-22 00:30:00 CST (job_id: weekly_epic_games_task)
2026-01-21 15:26:16 | DEBUG | main:deploy:166 | Next execution scheduled: 2026-01-22 12:00:00 CST (job_id: daily_epic_games_task)
2026-01-21 15:26:16 | DEBUG | main:deploy:171 | Scheduler is running, send SIGINT or SIGTERM to stop gracefully

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions