@@ -2126,6 +2126,10 @@ async def select_text(
21262126 This method waits for [actionability](https://playwright.dev/python/docs/actionability) checks, then focuses the element and selects all its text
21272127 content.
21282128
2129+ If the element is inside the `<label>` element that has an associated
2130+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
2131+ control instead.
2132+
21292133 Parameters
21302134 ----------
21312135 force : Union[bool, NoneType]
@@ -2145,7 +2149,10 @@ async def select_text(
21452149 async def input_value(self, *, timeout: float = None) -> str:
21462150 """ElementHandle.input_value
21472151
2148- Returns `input.value` for `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
2152+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
2153+
2154+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
2155+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
21492156
21502157 Parameters
21512158 ----------
@@ -2180,12 +2187,14 @@ async def set_input_files(
21802187 ) -> NoneType:
21812188 """ElementHandle.set_input_files
21822189
2183- This method expects `elementHandle` to point to an
2184- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
2185-
21862190 Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
21872191 are resolved relative to the the current working directory. For empty array, clears the selected files.
21882192
2193+ This method expects [`elementHandle`] to point to an
2194+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
2195+ `<label>` element that has an associated
2196+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
2197+
21892198 Parameters
21902199 ----------
21912200 files : Union[List[Union[pathlib.Path, str]], List[{name: str, mimeType: str, buffer: bytes}], pathlib.Path, str, {name: str, mimeType: str, buffer: bytes}]
@@ -4775,7 +4784,10 @@ async def input_value(
47754784 ) -> str:
47764785 """Frame.input_value
47774786
4778- Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
4787+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
4788+
4789+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
4790+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
47794791
47804792 Parameters
47814793 ----------
@@ -4820,12 +4832,14 @@ async def set_input_files(
48204832 ) -> NoneType:
48214833 """Frame.set_input_files
48224834
4823- This method expects `selector` to point to an
4824- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
4825-
48264835 Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
48274836 are resolved relative to the the current working directory. For empty array, clears the selected files.
48284837
4838+ This method expects `selector` to point to an
4839+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
4840+ `<label>` element that has an associated
4841+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
4842+
48294843 Parameters
48304844 ----------
48314845 selector : str
@@ -7530,8 +7544,8 @@ async def goto(
75307544 ) -> typing.Optional["Response"]:
75317545 """Page.goto
75327546
7533- Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of the
7534- last redirect.
7547+ Returns the main resource response. In case of multiple redirects, the navigation will resolve with the first
7548+ non- redirect response .
75357549
75367550 The method will throw an error if:
75377551 - there's an SSL error (e.g. in case of self-signed certificates).
@@ -8977,7 +8991,10 @@ async def input_value(
89778991 ) -> str:
89788992 """Page.input_value
89798993
8980- Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
8994+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
8995+
8996+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
8997+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
89818998
89828999 Parameters
89839000 ----------
@@ -9022,12 +9039,14 @@ async def set_input_files(
90229039 ) -> NoneType:
90239040 """Page.set_input_files
90249041
9025- This method expects `selector` to point to an
9026- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
9027-
90289042 Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
90299043 are resolved relative to the the current working directory. For empty array, clears the selected files.
90309044
9045+ This method expects `selector` to point to an
9046+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
9047+ `<label>` element that has an associated
9048+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
9049+
90319050 Parameters
90329051 ----------
90339052 selector : str
@@ -12985,6 +13004,37 @@ def nth(self, index: int) -> "Locator":
1298513004
1298613005 return mapping.from_impl(self._impl_obj.nth(index=index))
1298713006
13007+ def that(
13008+ self,
13009+ *,
13010+ has_text: typing.Union[str, typing.Pattern] = None,
13011+ has: "Locator" = None
13012+ ) -> "Locator":
13013+ """Locator.that
13014+
13015+ This method narrows existing locator according to the options, for example filters by text.
13016+
13017+ Parameters
13018+ ----------
13019+ has_text : Union[Pattern, str, NoneType]
13020+ Matches elements containing specified text somewhere inside, possibly in a child or a descendant element. When passed a
13021+ [string], matching is case-insensitive and searches for a substring. For example, `"Playwright"` matches
13022+ `<article><div>Playwright</div></article>`.
13023+ has : Union[Locator, NoneType]
13024+ Matches elements containing an element that matches an inner locator. Inner locator is queried against the outer one.
13025+ For example, `article` that has `text=Playwright` matches `<article><div>Playwright</div></article>`.
13026+
13027+ Note that outer and inner locators must belong to the same frame. Inner locator must not contain `FrameLocator`s.
13028+
13029+ Returns
13030+ -------
13031+ Locator
13032+ """
13033+
13034+ return mapping.from_impl(
13035+ self._impl_obj.that(has_text=has_text, has=has._impl_obj if has else None)
13036+ )
13037+
1298813038 async def focus(self, *, timeout: float = None) -> NoneType:
1298913039 """Locator.focus
1299013040
@@ -13196,7 +13246,10 @@ async def inner_text(self, *, timeout: float = None) -> str:
1319613246 async def input_value(self, *, timeout: float = None) -> str:
1319713247 """Locator.input_value
1319813248
13199- Returns `input.value` for `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
13249+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
13250+
13251+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
13252+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
1320013253
1320113254 Parameters
1320213255 ----------
@@ -13580,6 +13633,10 @@ async def select_text(
1358013633 This method waits for [actionability](https://playwright.dev/python/docs/actionability) checks, then focuses the element and selects all its text
1358113634 content.
1358213635
13636+ If the element is inside the `<label>` element that has an associated
13637+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
13638+ control instead.
13639+
1358313640 Parameters
1358413641 ----------
1358513642 force : Union[bool, NoneType]
@@ -13611,12 +13668,14 @@ async def set_input_files(
1361113668 ) -> NoneType:
1361213669 """Locator.set_input_files
1361313670
13614- This method expects `element` to point to an
13615- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
13616-
1361713671 Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
1361813672 are resolved relative to the the current working directory. For empty array, clears the selected files.
1361913673
13674+ This method expects [`locator`] to point to an
13675+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
13676+ `<label>` element that has an associated
13677+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
13678+
1362013679 Parameters
1362113680 ----------
1362213681 files : Union[List[Union[pathlib.Path, str]], List[{name: str, mimeType: str, buffer: bytes}], pathlib.Path, str, {name: str, mimeType: str, buffer: bytes}]
@@ -15491,7 +15550,10 @@ async def not_to_be_checked(self, *, timeout: float = None) -> NoneType:
1549115550 async def to_be_disabled(self, *, timeout: float = None) -> NoneType:
1549215551 """LocatorAssertions.to_be_disabled
1549315552
15494- Ensures the `Locator` points to a disabled element.
15553+ Ensures the `Locator` points to a disabled element. Element is disabled if it has \"disabled\" attribute or is disabled
15554+ via ['aria-disabled'](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-disabled). Note
15555+ that only native control elements such as HTML `button`, `input`, `select`, `textarea`, `option`, `optgroup` can be
15556+ disabled by setting \"disabled\" attribute. \"disabled\" attribute on other elements is ignored by the browser.
1549515557
1549615558 ```py
1549715559 from playwright.async_api import expect
0 commit comments