fix: resolve unnamed element refs matching multiple elements (#573)
* fix: resolve unnamed element refs matching multiple elements (#500) When a page has one unnamed button among several named buttons, clicking its ref fails with "matched N elements" because the locator `getByRole('button')` matches all buttons on the page. Normalize unnamed interactive elements to `name: ""` so the selector becomes `getByRole('button', { name: "", exact: true })` which matches only buttons with empty accessible names. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: remove dead code branch in buildSelector Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: make RefMap.name required string, remove dead code branches Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: hyunjinee <leehj0110@kakao.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
hyunjinee
parent
79d8dfe34c
commit
7238b7da4c
+4
-6
@@ -226,12 +226,10 @@ export class BrowserManager {
|
||||
}
|
||||
|
||||
// Build locator with exact: true to avoid substring matches
|
||||
let locator: Locator;
|
||||
if (refData.name) {
|
||||
locator = page.getByRole(refData.role as any, { name: refData.name, exact: true });
|
||||
} else {
|
||||
locator = page.getByRole(refData.role as any);
|
||||
}
|
||||
let locator: Locator = page.getByRole(refData.role as any, {
|
||||
name: refData.name,
|
||||
exact: true,
|
||||
});
|
||||
|
||||
// If an nth index is stored (for disambiguation), use it
|
||||
if (refData.nth !== undefined) {
|
||||
|
||||
Reference in New Issue
Block a user