#!/usr/bin/env bash # Playwright codegen headed 录制 Priority1 公开询价路径 set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" export RPA_HEADLESS=false DEFAULT_URL="https://www.priority1.com/instant-freight-quotes/" FORBIDDEN=( "dashboard.priority1.com" "api.priority1.com" ) check_url() { local url="$1" local pattern for pattern in "${FORBIDDEN[@]}"; do if echo "$url" | grep -qi "$pattern"; then echo "错误:禁止使用入口 URL:${pattern}" >&2 echo "请使用公开询价页或首页" >&2 exit 1 fi done } usage() { cat <.js .rpa/priority1-storage.json EOF } if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then usage exit 0 fi OUTPUT_DIR=".rpa/recordings" STORAGE_PATH="${PRIORITY1_STORAGE_STATE_PATH:-.rpa/priority1-storage.json}" mkdir -p "$OUTPUT_DIR" "$(dirname "$STORAGE_PATH")" TIMESTAMP="$(date +%Y%m%d-%H%M%S)" OUTPUT_FILE="${OUTPUT_DIR}/priority1-${TIMESTAMP}.js" START_URL="${1:-$DEFAULT_URL}" check_url "$START_URL" echo "=== Priority1 RPA 录制(headed)===" echo "RPA_HEADLESS=${RPA_HEADLESS}" echo "禁止入口: dashboard.priority1.com / api.priority1.com" echo "起始 URL: ${START_URL}" echo "脚本产出: ${OUTPUT_FILE}" echo "storageState: ${STORAGE_PATH}" echo "" ARGS=( codegen --target=javascript -o "$OUTPUT_FILE" --save-storage="$STORAGE_PATH" ) if [[ -f "$STORAGE_PATH" ]]; then ARGS+=("--load-storage=$STORAGE_PATH") echo "已加载已有 storageState: ${STORAGE_PATH}" fi ARGS+=("$START_URL") echo "" exec env RPA_HEADLESS=false npx playwright "${ARGS[@]}"