Skip to content

Commit 91dc04b

Browse files
authored
fix: set_value and set_text sent incorrect data (#831)
1 parent c2a80fa commit 91dc04b

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed

appium/webdriver/webdriver.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
# pylint: disable=too-many-lines,too-many-public-methods,too-many-statements,no-self-use
1616

17+
import warnings
1718
from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar, Union
1819

1920
from selenium import webdriver
@@ -434,6 +435,7 @@ def create_web_element(self, element_id: Union[int, str]) -> MobileWebElement:
434435

435436
def set_value(self: T, element: MobileWebElement, value: str) -> T:
436437
"""Set the value on an element in the application.
438+
deprecated:: 2.8.1
437439
438440
Args:
439441
element: the element whose value will be set
@@ -442,10 +444,14 @@ def set_value(self: T, element: MobileWebElement, value: str) -> T:
442444
Returns:
443445
`appium.webdriver.webdriver.WebDriver`: Self instance
444446
"""
445-
data = {
446-
'id': element.id,
447-
'value': [value],
448-
}
447+
warnings.warn(
448+
'The "setValue" API is deprecated and will be removed in future versions. '
449+
'Instead the "send_keys" API or W3C Actions can be used. '
450+
'See https://github.com/appium/python-client/pull/831',
451+
DeprecationWarning,
452+
)
453+
454+
data = {'text': value}
449455
self.execute(Command.SET_IMMEDIATE_VALUE, data)
450456
return self
451457

appium/webdriver/webelement.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import warnings
1516
from typing import Callable, Dict, List, Optional, Union
1617

1718
from selenium.webdriver.common.utils import keys_to_typing
@@ -157,6 +158,7 @@ def clear(self) -> 'WebElement':
157158

158159
def set_text(self, keys: str = '') -> 'WebElement':
159160
"""Sends text to the element.
161+
deprecated:: 2.8.1
160162
161163
Previous text is removed.
162164
Android only.
@@ -170,7 +172,14 @@ def set_text(self, keys: str = '') -> 'WebElement':
170172
Returns:
171173
`appium.webdriver.webelement.WebElement`
172174
"""
173-
data = {'id': self._id, 'value': [keys]}
175+
warnings.warn(
176+
'The "setText" API is deprecated and will be removed in future versions. '
177+
'Instead the "send_keys" API or W3C Actions can be used. '
178+
'See https://github.com/appium/python-client/pull/831',
179+
DeprecationWarning,
180+
)
181+
182+
data = {'text': keys}
174183
self._execute(Command.REPLACE_KEYS, data)
175184
return self
176185

@@ -190,17 +199,22 @@ def location_in_view(self) -> Dict[str, int]:
190199

191200
def set_value(self, value: str) -> 'WebElement':
192201
"""Set the value on this element in the application
202+
deprecated:: 2.8.1
193203
194204
Args:
195205
value: The value to be set
196206
197207
Returns:
198208
`appium.webdriver.webelement.WebElement`
199209
"""
200-
data = {
201-
'id': self.id,
202-
'value': [value],
203-
}
210+
warnings.warn(
211+
'The "setValue" API is deprecated and will be removed in future versions. '
212+
'Instead the "send_keys" API or W3C Actions can be used. '
213+
'See https://github.com/appium/python-client/pull/831',
214+
DeprecationWarning,
215+
)
216+
217+
data = {'text': value}
204218
self._execute(Command.SET_IMMEDIATE_VALUE, data)
205219
return self
206220

test/unit/webdriver/webelement_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def test_set_value(self):
4646
element.set_value(value)
4747

4848
d = get_httpretty_request_body(httpretty.last_request())
49-
assert d['value'] == [value]
49+
assert d['text'] == value
5050

5151
@httpretty.activate
5252
def test_send_key(self):

0 commit comments

Comments
 (0)