web-dev-qa-db-fra.com

Selenium + Firefox Dev-Edition: send_keys levant une exception [object Undefined]

Essayer de saisir le nom d'utilisateur lors de la connexion en utilisant la méthode send_keys(). Je suppose qu’il est capable de localiser l’élément d’entrée, comme lorsque j’exécute avant le send_keys cela fonctionne. Avec l'envoi d'une valeur de chaîne dans send_keys, une erreur est générée.

Selenium.common.exceptions.WebDriverException: Message: Attendu que [objet non défini] non défini soit une chaîne.

Qu'est-ce que je rate?

Python: 3.5
Sélénium 3.3.1
Firefox Developer Edition ou Nightly (version actuelle> 52)
Mon extrait de code:

login_url = "https://korunet.co.nz/"
driver = webdriver.Firefox()
driver.get(login_url)
WebDriverWait(driver, 30).until(ec.visibility_of_element_located((By.CSS_SELECTOR, '#IDToken1')))

elem = driver.find_element_by_css_selector('#IDToken1')
elem.click()
elem.clear()
elem.send_keys("10101")

Traceback (dernier appel le plus récent):

Fichier "D: /PycharmProjects/JCBbidEntry/tests/loop2.py", ligne 29, dans Elem.send_keys ("10101")
Fichier "C:\Utilisateurs\BaruaR\AppData\Roaming\Python\Python35\sites-packages\Selenium\webdriver\remote\webelement.py", ligne 347, dans send_keys Self._execute (Command.SEND_KEYS_TO_ELEMENT, {'valeur': keys_to_typing (valeur)})
Fichier "C:\Utilisateurs\BaruaR\AppData\Roaming\Python\Python35\sites-packages\Selenium\webdriver\remote\webelement.py", ligne 491, dans _execute . _parent.execute (commande, paramètres)
Fichier "C:\Utilisateurs\BaruaR\AppData\Roaming\Python\Python35\sites-packages\Selenium\webdriver\remote\webdriver.py", ligne 238, dans l'exécution Self.error_handler .check_response (réponse)
Fichier "C:\Utilisateurs\BaruaR\AppData\Roaming\Python\Python35\sites-packages\Selenium\webdriver\remote\errorhandler.py", ligne 193, dans check_response
déclenche une classe d'exception (message, screen, stacktrace)

9
user1751844

Semble être résolu, du moins pour moi avec la dernière version de geckodriver 0.16: https://github.com/mozilla/geckodriver/releases/tag/v0.16.0

Notez que la version 0.16 requiert Selenium 3.4.

-Erinn

4

Idem ici ... Cela semble être un problème avec FIREFOX ... cela fonctionne comme prévu avec CHROME ;-(

3
manatlan

j'ai aussi le même problème dans mon cas mon geckodriver est 64bit mais firefox est 32 bit il jette une erreur

1
user7853955

Une solution qui a fonctionné pour moi consiste à définir l'attribut value au lieu d'utiliser send_keys.

driver.execute_script("document.getElementById('login-username').setAttribute('value', 'username')")
0
alexxei

Avait une mise à jour de Firefox et la même chose m'est arrivé. Réinstallez Geckodriver 64 bits ( https://github.com/mozilla/geckodriver/releases ) et cela a fonctionné pour moi.

0
MartinWeaver

La mise à jour vers geckodriver 0.17.0 a corrigé le problème pour moi
Firefox 53.0.3
Sélénium 3.4.3
Python 3.6

binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary) 
driver.get(url)

emailInput = driver.find_element_by_id("login-username")
emailInput.send_keys("username")
0
Viragos