Skip to content

Commit

Permalink
Merge pull request #227 from dhlavac/send_keys_sensitive
Browse files Browse the repository at this point in the history
Added possibility to don't log sensitive data with sendkeys method
  • Loading branch information
rsnyman committed Mar 10, 2023
2 parents 4b87e38 + cd2134e commit be64e13
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
5 changes: 3 additions & 2 deletions src/widgetastic/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -843,11 +843,12 @@ def clear(self, locator: LocatorAlias, *args, **kwargs) -> None:
def is_selected(self, *args, **kwargs) -> bool:
return self.element(*args, **kwargs).is_selected()

def send_keys(self, text: str, locator: LocatorAlias, *args, **kwargs) -> None:
def send_keys(self, text: str, locator: LocatorAlias, sensitive=False, *args, **kwargs) -> None:
"""Sends keys to the element. Detects the file inputs automatically.
Args:
text: Text to be inserted to the element.
sensitive: Bool, If is set to True do not log sensitive data.
*args: See :py:meth:`elements`
**kwargs: See :py:meth:`elements`
"""
Expand All @@ -864,7 +865,7 @@ def send_keys(self, text: str, locator: LocatorAlias, *args, **kwargs) -> None:
self.selenium.file_detector = LocalFileDetector()
el = self.move_to_element(locator, *args, **kwargs)
self.plugin.before_keyboard_input(el, text)
self.logger.debug("send_keys %r to %r", text, locator)
self.logger.debug("send_keys %r to %r", "*" * len(text) if sensitive else text, locator)
result = el.send_keys(text)
if Keys.ENTER not in text:
try:
Expand Down
9 changes: 7 additions & 2 deletions src/widgetastic/widget/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,19 @@ def value(self):
def read(self):
return self.value

def fill(self, value):
def fill(self, value, sensitive=False):
"""Fill TextInput widget with value
Args:
value: Text to be filled into the input.
sensitive: Bool, If is set to True do not log sensitive data.
"""
current_value = self.value
if value == current_value:
return False
# Clear and type everything
self.browser.click(self)
self.browser.clear(self)
self.browser.send_keys(value, self)
self.browser.send_keys(value, self, sensitive)
return True


Expand Down

0 comments on commit be64e13

Please sign in to comment.