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)
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
Idem ici ... Cela semble être un problème avec FIREFOX ... cela fonctionne comme prévu avec CHROME ;-(
j'ai aussi le même problème dans mon cas mon geckodriver est 64bit mais firefox est 32 bit il jette une erreur
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')")
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.
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")