Diwall

Español
Descargar 1.24.4

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_iframe con iframe_selecteur para 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.