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 ^^

results matching ""

    No results matching ""