2016-07-03 7 views
1

Ich benutze Selen um twitter zu scarpten (nicht mit den api's nur seleinum praktizierend), die Login benötigen, wenn es zur folgenden Seite kommt, benutze den folgenden Code um die Login Eingabefelder zu finden und dann den Benutzernamen zu senden und Passwort string:Python Selen send_keys funktioniert nicht

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
driver = webdriver.Chrome(executable_path="Chrome") 
driver.get("https://twitter.com/login") 
username = driver.find_element_by_xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[1]/input") 
username.send_keys("username") 
password = driver.find_element_by_xpath("//*[@id='page-container']/div/div[1]/form/fieldset/div[2]/input") 
password.send_keys("password") 
password.send_keys(Keys.ENTER) 

driver.get("http://twitter.com/user/following") 
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 

der Code arbeitet, außer für das zweite Feld (Passwort-Feld) es nicht die Passwort-Strings senden und springt es in die nächste Zeile (Keys.ENTER) und als nächstes geht es weiter zu den Folgende Seite, die eine Anmeldung erfordern, aber der Cursor war auf dem Passwortfeld, was bedeutet, dass es bereits gefunden, seltsam genug gibt es keine Fehlermeldung oder Fehlercode beim Ausführen des Skripts.

irgendwelche Gedanken was ist die Ursache für dieses Problem?

bin mit Python 2.7.6 Selen Version 2.53.6 auf ubuntu 14.04

Danke im Voraus

Antwort

1

Statt das Senden der ENTER-Taste, klicken Sie einfach auf die Schaltfläche Anmelden. Außerdem ist dein XPath ziemlich spröde. Ich würde eine genauere verwenden oder Sie können die CSS-Selektoren unten verwenden.

driver.find_element_by_css_selector("#page-container input.email-input").send_keys(username); 
driver.find_element_by_css_selector("#page-container input.js-password-field").send_keys(password); 
driver.find_element_by_css_selector("button.submit").click();