Python Selenium exceptions - Element input is not reachable by keyboard

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

Python Selenium exceptions - Element…

03.10.2019 napsal Knocker

Vyřešeno 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.
Nejlépe hodnocení uživatelé
Hanz

Počet UP: 4857

React: 211

Rusty

Počet UP: 2250

React: 94

OL3G

Počet UP: 1569

React: 59

SYSTEM

Počet UP: 403

React: 23

Strosmajer

Počet UP: 460

React: 22

Oxytocin

Počet UP: 276

React: 15

Hyacint

Počet UP: 17

React: 10

RE: Python Selenium exceptions -…

09.10.2019 odpověděl Knocker

Zkontrolováno

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.
Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace