Suppose there is a password input on the site, maden as two hidden connected inputs:
<input id="dummypassword" class="input" onfocus="this.style.display='none';document.getElementById('pw').style.display='inline';document.getElementById('pw').focus()" value="Password" tabindex="2" name="dummypassword" style="display: inline;" type="text">
<input id="pw" class="input" onblur="if(this.value==''){this.style.display='none';document.getElementById('dummypassword').style.display='inline'}" onkeypress="if (event.keyCode==13)fmLogin.submit();" value="" style="display: none;" tabindex="2" name="tbPassword" autocomplete="off" type="password">
If you activate #dummypassword it will automatically became hidden and #pw will handle further user input. So, if you don't pay attention to this point, you will be able to login (sometimes), but more often you will get the error:
'Element is not currently interactable and may not be manipulated'
The way you should go:
username_field = self.browser.find_element_by_xpath(username_field_path)
password_field = self.browser.find_element_by_xpath(password_field_path)
password_hidden_field = self.browser.find_element_by_xpath(password_hidden_field_path)
login_button = self.browser.find_element_by_xpath(login_button_path)
try:
username_field.click()
username_field.clear()
username_field.send_keys(self.username)
password_field.click()
password_hidden_field.send_keys(self.password)
login_button.click()
So, activate first password field, but put your value to that hidden one.
Hope, that will help somebody ^^