Fix select_all(include_frames=True) not searching nested iframes#246
Open
chronoAP wants to merge 2 commits intocdpdriver:mainfrom
Open
Fix select_all(include_frames=True) not searching nested iframes#246chronoAP wants to merge 2 commits intocdpdriver:mainfrom
chronoAP wants to merge 2 commits intocdpdriver:mainfrom
Conversation
CDP's querySelectorAll only queries within a single document boundary and does not cross into iframe content_document subtrees. This meant elements inside nested iframes were never found. Walk the full DOM tree to collect each iframe's content_document and query them individually. Also adds a guard for cross-origin iframes where content_document is None, and fixes the fullscreen() docstring.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Originally submitted by: nzxcvz
fqx Verified that it does not find child nodes with find(), and I verified using their test that select_all() has the same behaviour.
Fixes #239
CDP's querySelectorAll only queries within a single document boundary and does not cross into iframe content_document subtrees. This meant elements inside nested iframes were never found.
Walk the full DOM tree to collect each iframe's content_document and query them individually.
Also fixed an issue I had related to this function during use, and something I noticed while snooping the code base: add a guard for cross-origin iframes where content_document is None, and fixes the fullscreen() docstring.
Pre-merge Checklist
./scripts/format.shand./scripts/lint.shscripts. My code is properly formatted and has no linting errors.uv run pytestand ensured all tests pass.[Unreleased]section.