Python Selenium exceptions - Element input is not reachable by keyboard

Python Selenium exceptions - Element input is not reachable by keyboard

Dobrý den, na serveru s CentOS 7 používám na testování dlouhodobě Python + Selenium + webdriver gecko na Firefox. Doteď jsem měl vyjímku, aby se nedělal update Firefoxu. Dnes jsem však update udělal a od té doby mně python selenium skript na přihlášení na jedny webové stránky začal hlásit chybu:


selenium.common.exceptions.ElementNotInteractableException: Message: Element < input id="password_input" class="ui-inputfield" name="password_input" type="password"> is not reachable by keyboard


Na skript jsem několik měsíců nesahal a fungoval bezchybně. Problémová část se týká volby inputu pro vyplnění hesla - provede vyčištění inputu (clear) a poslání proměnné s heslem (send_keys(pass)):


passFieldElement.clear
passFieldElement.send_keys(pass)


Element se volí dle xpath a to je v pořádku.

ODPOVĚĎ


Tak jsem tu chybu "Element input is not reachable by keyboard" nakonec vyřešil trochu oklikou, popíšu to celé včetně upgrade/update selenium+webdriver gecko.

Postupoval jsem takto:
#upgrade selenium
pip3 install --upgrade selenium

#upgrade webdriver
- stáhnout z https://github.com/mozilla/geckodriver/releases
tar xzf geckodriver-v0.25.0-linux64.tar.gz
mv geckodriver /usr/bin/
mv: overwrite ‘/usr/bin/geckodriver’? y

------------------------------------------------
A teď to nejhlavnější, co řeší chybu Element input is not reachable by keyboard:
#původní kód

passFieldElement.clear
passFieldElement.send_keys(pass)


#opraven takto:

passFieldElement.click()
passFieldElement.clear
passFieldElement.send_keys(pass)


Což však v mém případě způsobilo další chybu, kterou je:

selenium.common.exceptions.StaleElementReferenceException: Message: The element reference of < input id="password_input" class="ui-inputfield" name="password_input" type="password"> is stale; either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed



To v krátkosti znamená, že poté co se klikne na passFieldElement.click(), tak stránka či část stránky se reloadne a element už nelze najít.

#řešení je znovu element najít a pak s ním provádět další operace

passFieldElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(passFieldID))
#passFieldElement.clear
passFieldElement.send_keys(pass)


Tradááá a problémy jsou vyřešeny a skript je úspěšně dokončen.

Komentáře

Vaše reakce na Python Selenium exceptions - Element input is not reachable by keyboard

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.