Skip to content

fix: targeted extract not allowing xpath= #887

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

seanmcguire12
Copy link
Member

@seanmcguire12 seanmcguire12 commented Jul 16, 2025

why

  • we were passing the wrong variable to getAccessibilityTree which broke targeted extract for selectors with the xpath= prefix

what changed

  • pass the parsed xpath instead of the raw selector

test plan

  • targeted extract evals

Copy link

changeset-bot bot commented Jul 16, 2025

🦋 Changeset detected

Latest commit: e1a8d98

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@seanmcguire12 seanmcguire12 added extract These changes pertain to the extract function targeted-extract These changes pertain to targeted extract and removed extract These changes pertain to the extract function labels Jul 16, 2025
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Greptile Summary

This PR fixes a critical bug in the targeted extract functionality where XPath selectors were not working correctly. The issue was caused by passing the raw selector string (including the xpath= prefix) to getAccessibilityTree instead of the parsed XPath expression. The fix is a simple but important change that properly strips the xpath= prefix before passing the selector to the tree generation function.

This change is important for maintaining the library's XPath-based extraction capabilities, which are documented in the changelog as being introduced in version 1.14.0. The fix ensures that users can continue to use XPath selectors for targeted extraction as intended.

Confidence score: 5/5

  1. This PR is extremely safe to merge
  2. The change is minimal, well-isolated, and fixes a clear bug with an obvious solution
  3. No files need special attention - the change is straightforward and well-tested

1 file reviewed, no comments
Edit PR Review Bot Settings | Greptile

@seanmcguire12 seanmcguire12 merged commit 87e09c6 into main Jul 16, 2025
18 of 29 checks passed
seanmcguire12 pushed a commit that referenced this pull request Jul 31, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @browserbasehq/stagehand@2.4.2

### Patch Changes

- [#865](#865)
[`6b4e6e3`](6b4e6e3)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - improve
type safety for trimTrailingTextNode

- [#897](#897)
[`e77d018`](e77d018)
Thanks [@miguelg719](https://github.com/miguelg719)! - Fix selfHeal to
remember intially received arguments

- [#920](#920)
[`c20adb9`](c20adb9)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix: tab
handling on API

- [#882](#882)
[`b86df93`](b86df93)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - remove
elements that don't have xpaths from observe response

- [#905](#905)
[`023c2c2`](023c2c2)
Thanks [@tkattkat](https://github.com/tkattkat)! - Delete old images
from anthropic cua client

- [#925](#925)
[`8c28647`](8c28647)
Thanks [@miguelg719](https://github.com/miguelg719)! - Remove
\_refreshPageFromApi()

- [#887](#887)
[`87e09c6`](87e09c6)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix: allow
xpaths with prepended 'xpath=' for targeted extract

- [#864](#864)
[`a611115`](a611115)
Thanks [@miguelg719](https://github.com/miguelg719)! - Temporarily patch
custom clients serialization error on api

- [#881](#881)
[`69913fe`](69913fe)
Thanks [@miguelg719](https://github.com/miguelg719)! - Pass sdk version
number to API for debugging

- [#913](#913)
[`b1b83a1`](b1b83a1)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - move iframe
out of 'experimental'

- [#891](#891)
[`be8497c`](be8497c)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - fix: nested
iframe xpath bug

- [#883](#883)
[`98704c9`](98704c9)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - add timeout
for JS click

- [#907](#907)
[`04978bd`](04978bd)
Thanks [@seanmcguire12](https://github.com/seanmcguire12)! - store
mapping of CDP frame ID -> page

## @browserbasehq/stagehand-evals@1.0.6

### Patch Changes

- Updated dependencies
\[[`6b4e6e3`](6b4e6e3),
[`e77d018`](e77d018),
[`c20adb9`](c20adb9),
[`b86df93`](b86df93),
[`023c2c2`](023c2c2),
[`8c28647`](8c28647),
[`87e09c6`](87e09c6),
[`a611115`](a611115),
[`69913fe`](69913fe),
[`b1b83a1`](b1b83a1),
[`be8497c`](be8497c),
[`98704c9`](98704c9),
[`04978bd`](04978bd)]:
    -   @browserbasehq/stagehand@2.4.2

## @browserbasehq/stagehand-examples@1.0.6

### Patch Changes

- Updated dependencies
\[[`6b4e6e3`](6b4e6e3),
[`e77d018`](e77d018),
[`c20adb9`](c20adb9),
[`b86df93`](b86df93),
[`023c2c2`](023c2c2),
[`8c28647`](8c28647),
[`87e09c6`](87e09c6),
[`a611115`](a611115),
[`69913fe`](69913fe),
[`b1b83a1`](b1b83a1),
[`be8497c`](be8497c),
[`98704c9`](98704c9),
[`04978bd`](04978bd)]:
    -   @browserbasehq/stagehand@2.4.2

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
targeted-extract These changes pertain to targeted extract
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants