El elemento está dentro de un iframe y Set-of-Mark lo ignora
Un módulo de pago, un editor integrado, un formulario de terceros. La numeración se detiene en el borde del marco — y ese borde es una frontera de seguridad del navegador, no un descuido.
El síntoma. La captura muestra un formulario — un módulo de pago, un editor
integrado, un módulo de reservas de terceros. Set-of-Mark numera todo lo que lo
rodea y nada de lo que contiene. cliquer_som no lo alcanza, y un cliquer
simple con un selector CSS tampoco encuentra nada.
Por qué la numeración se detiene ahí
Un iframe es un documento aparte. Cuando procede de otro origen, el navegador prohíbe a la página — y a cualquier script que se ejecute en ella — entrar. Es una frontera de seguridad estricta, y es bueno que lo sea: es lo que impide que cualquier sitio lea el contenido del marco de pago que incrusta.
Es distinto del Shadow DOM, que es un encapsulado dentro del mismo documento y
que --shadow-dom puede recorrer. Aquí ninguna opción puede levantar la
frontera, porque levantarla sería una vulnerabilidad del navegador.
Dos acciones específicas la cruzan como es debido
Playwright entra en los marcos a través del protocolo de depuración en lugar de inyectar código, lo que es legítimo allí donde la inyección no lo sería. Diwall lo ofrece como dos acciones:
{"type": "cliquer_iframe", "iframe_selecteur": "iframe#payment",
"selecteur": "button.confirm"}
{"type": "remplir_iframe", "iframe_selecteur": "iframe#payment",
"selecteur": "input[name=cvv]",
"valeur": "depuis_secrets", "secret_cle": "cvv"}
remplir_iframe admite depuis_secrets y depuis_secrets_totp exactamente
igual que remplir — una credencial dentro de un marco se sigue resolviendo en
el proceso del navegador, nunca se escribe en el escenario.
force: true también está disponible en cliquer_iframe: las reglas de
interactividad de Playwright se aplican dentro del marco igual que fuera.
Un iframe dentro de un iframe
iframe_selecteur apunta a un marco de primer nivel. Los marcos anidados
requieren bajar por cada nivel, en orden:
{"type": "cliquer_iframe",
"iframe_chemin": ["iframe#wrapper", "iframe#payment"],
"selecteur": "button.confirm"}
Una lista ordenada, un selector CSS por nivel de anidamiento. Las dos formas se excluyen — una u otra, no las dos.
El límite, dicho sin rodeos
Dentro del marco no hay numeración Set-of-Mark. El selector CSS interior tiene que aportarlo usted.
Dónde conseguirlo: si el iframe es del mismo origen, un evaluer puede leerlo —
document.querySelector('iframe').contentDocument. Si es de otro origen, la
página no se lo dará: lea la documentación del tercero, o abra directamente la
dirección del marco en un navegador e inspecciónelo ahí.
Es un primer desbloqueo, no una percepción completa de los iframes. Decirlo es más útil que dejar que lo descubra con un formulario que no se deja rellenar.
En resumen
- No hay Set-of-Mark dentro de un iframe, y ninguna opción lo cambiará.
cliquer_iframe/remplir_iframeconiframe_selecteurpara un nivel.iframe_chemin— una lista ordenada — para marcos anidados.- La resolución de credenciales funciona dentro de los marcos igual que fuera.
- Usted aporta el selector interior; Diwall aporta el paso.