From 2ac9c08d0ca01a65cb3c361a9334ef9804421332 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 2 Dec 2021 10:31:06 -0800 Subject: [PATCH] feat(inputValue): allow on labels, retarget (#10666) --- packages/playwright-core/src/server/dom.ts | 6 +++--- packages/playwright-core/src/server/frames.ts | 5 +++-- .../playwright-core/src/server/injected/injectedScript.ts | 1 + tests/page/elementhandle-convenience.spec.ts | 7 +++++++ tests/page/locator-convenience.spec.ts | 6 ++++++ tests/playwright-test/playwright.expect.text.spec.ts | 8 +++++++- 6 files changed, 27 insertions(+), 6 deletions(-) diff --git a/packages/playwright-core/src/server/dom.ts b/packages/playwright-core/src/server/dom.ts index 9a261d50a1..a6cf6178c1 100644 --- a/packages/playwright-core/src/server/dom.ts +++ b/packages/playwright-core/src/server/dom.ts @@ -199,10 +199,10 @@ export class ElementHandle extends js.JSHandle { async inputValue(): Promise { return throwRetargetableDOMError(await this.evaluateInUtility(([injected, node]) => { - if (node.nodeType !== Node.ELEMENT_NODE || (node.nodeName !== 'INPUT' && node.nodeName !== 'TEXTAREA' && node.nodeName !== 'SELECT')) + const element = injected.retarget(node, 'follow-label'); + if (!element || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA' && element.nodeName !== 'SELECT')) throw injected.createStacklessError('Node is not an ,