| cdp_set_file_input |
function |
py |
browser |
1.0.0 |
impure |
def cdp_set_file_input(selector: str, file_paths, *, port: int = 9222, target_url_substr: str = '', timeout_s: float = 10.0) -> dict |
Asigna uno o varios archivos a un <input type=file> de una pestana de un Chrome con remote debugging, via CDP, SIN abrir el dialogo nativo del sistema operativo. Localiza el target por substring de URL, abre el WebSocket y ejecuta DOM.enable -> DOM.getDocument -> DOM.querySelector(selector) -> DOM.setFileInputFiles con las rutas ABSOLUTAS. Es el unico metodo robusto para subir archivos por CDP: el navegador no permite escribir el value de un file input desde JS (seguridad) y simular drag&drop es fragil; setFileInputFiles inyecta los File y dispara el evento change que la SPA escucha. Base de whatsapp_send_image y de cualquier flujo de subida de archivos sobre el navegador diario sin robar el foco al usuario. |
| cdp |
| browser |
| automation |
| upload |
| file-input |
| python |
| navegator |
|
|
|
|
false |
error_go_core |
| json |
| os |
| urllib.request |
| websocket |
|
| params |
output |
| name |
desc |
| selector |
Selector CSS del <input type=file> destino. Debe resolver a UN elemento (se usa el primer match). El input puede estar oculto (display:none); CDP lo localiza igual. |
|
| name |
desc |
| file_paths |
Ruta (str) o lista de rutas a asignar. Se expanden (~) y se convierten a rutas ABSOLUTAS; cada una debe existir en disco o se aborta con ok=False antes de tocar la red. |
|
| name |
desc |
| port |
Puerto de remote debugging de Chrome. Default 9222. |
|
| name |
desc |
| target_url_substr |
Substring que debe contener la URL del target (pestana). Si vacio, usa el primer target de tipo 'page'. |
|
| name |
desc |
| timeout_s |
Timeout en segundos para la conexion WebSocket. Default 10.0. |
|
|
dict {ok: bool, error: str, node_id: int (nodeId CDP del input localizado, 0 si no se encontro), selector: str (eco), files: list[str] (rutas absolutas asignadas)}. ok=True solo si el input se localizo y setFileInputFiles no devolvio error. Nunca lanza: errores de archivo/red/conexion/transport se devuelven en 'error' con ok=False. |
|
true |
| test_golden_asigna_archivos_al_input |
| test_edge_archivo_inexistente_ok_false_sin_red |
| test_edge_selector_no_encontrado_ok_false |
| test_error_create_connection_lanza_ok_false |
|
python/functions/browser/cdp_set_file_input_test.py |
python/functions/browser/cdp_set_file_input.py |