Diwall

English
Download 1.24.4

The element is inside an iframe and Set-of-Mark ignores it

A payment widget, an embedded editor, a third-party form. The numbering stops at the frame border — and that border is a browser security boundary, not an oversight.

The symptom. The capture shows a form — a payment widget, an embedded editor, a third-party booking module. Set-of-Mark numbers everything around it and nothing inside it. cliquer_som cannot reach it, and a plain cliquer with a CSS selector finds nothing either.

Why the numbering stops there

An iframe is a separate document. When it comes from another origin, the browser forbids the page — and any script running in it — from reaching inside. That is a hard security boundary, and a good one: it is what stops any site from reading the contents of a payment frame it embeds.

This is different from Shadow DOM, which is encapsulation within the same document and which --shadow-dom can traverse. Here, no flag can lift the boundary, because lifting it would be a browser vulnerability.

Two dedicated actions cross it properly

Playwright reaches into frames through the debugging protocol rather than by injecting script, which is legitimate where injection would not be. Diwall exposes it as two actions:

{"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 supports depuis_secrets and depuis_secrets_totp exactly like remplir — a credential inside a frame is still resolved in the browser process, never written in the scenario.

force: true is available on cliquer_iframe too: Playwright’s interactability rules apply inside the frame as they do outside.

An iframe inside an iframe

iframe_selecteur targets one top-level frame. Nested frames need a descent through each level, in order:

{"type": "cliquer_iframe",
 "iframe_chemin": ["iframe#wrapper", "iframe#payment"],
 "selecteur": "button.confirm"}

An ordered array, one CSS selector per nesting level. The two forms are mutually exclusive — use one or the other, not both.

The limit, stated plainly

There is no Set-of-Mark numbering inside the frame. You need the inner CSS selector yourself.

Where to get it: if the iframe is same-origin, an evaluer can read it — document.querySelector('iframe').contentDocument. If it is cross-origin, you will not get it from the page: read the third party’s own documentation, or open the frame’s URL directly in a browser and inspect it there.

This is a first unlock, not full iframe-aware perception. Saying so is more useful than letting you find out on a form that will not fill.

In short

  • No Set-of-Mark inside an iframe, and no flag will change that.
  • cliquer_iframe / remplir_iframe with iframe_selecteur for one level.
  • iframe_chemin — an ordered array — for nested frames.
  • Credential resolution works inside frames exactly as outside.
  • You supply the inner selector; Diwall supplies the crossing.