2016-09-10 5 views
1

Ich bin bereit, mich an this website mit Selen anmelden. Also habe ich den Web-Treiber importiert und um die Login-Informationen an diese Seite zu senden, habe ich auch die Keys importiert. mit „implizit Funktion warten“Abwracken von Inhalten mit Selen funktioniert nicht

Der Benutzername Spalte der Webseite

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

Das ich das Selen vorbereiten verwendet,

chromedriver = "chromedriver.exe" 
browser = webdriver.Chrome(chromedriver) 
browser.get("https://m.adidas.com/us/myaccount-create-or-login") 

Ich habe den Browser zu warten, bis die Seite geladen wird gemacht HTML hat Inhalt wie dieser,

<input type="text" value="" placeholder="* EMAIL" data-placeholder="* Email" maxlength="50" class="textinput required trimspace" name="username" id="username">

Und für Passwort hat es

<input type="password" placeholder="* PASSWORD" data-placeholder="* Password" maxlength="50" autocomplete="off" name="password" value="" class="textinputpw required" id="password">

ich die IDs der beiden Elemente mit dem obigen Code gefunden haben, und dann schrieb ich diesen Code, um die persönlichen Informationen

senden
username1 = browser.find_element_by_id("username") 
password1 = browser.find_element_by_id("password") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

Aber der obige Code sendet nicht die Informationen Ich weiß nicht, warum es ist? Kannst du mir bitte dabei helfen?

Ich habe versucht, die Schlüssel mit X-Pfad auch zu senden. Ich habe die Seitenquelle ausgedruckt, um zu prüfen, ob auf der Website der Fehler Zugriff verweigert angezeigt wird. In meinem Fall ist dies jedoch nicht der Fall.

Ich bin neu in diesem freundlich kahl, wenn etwas falsch ist

EDIT: - Meine Versuchen:

username1 = browser.find_element_by_id("username") 
browser.switch_to.frame(username1) 
password1 = browser.find_element_by_id("password") 
browser.switch_to.frame(password1) 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 
password1.send_keys(password.get()) 

Antwort

1

Die Elemente, die Sie versuchen, sind innerhalb eines IFRAME zu erreichen.

<iframe id="loginaccountframe" class="sso-iframe" src="https://cp.adidas.com/web/eCom/en_US/loadsignin?target=account" frameborder="0" scrolling="no"></iframe> 

Sie müssen in den IFRAME wechseln, bevor Sie sie sehen können.

http://selenium-python.readthedocs.io/navigating.html#moving-between-windows-and-frames

+0

Ich habe versucht, das Hinzufügen browser.switch_to.frame (username1) nach der id (I refrred andere satck Überlauf Antwort und dass alos druckt Element nicht gefunden Ausnahmsweise könntest du mehr erklären Ich habe dieses Tutorial auch genannt .. Ich bin neu, bitte hilf mir – abcdef

+0

Du hast nicht erwähnt, dass du versucht hast auf den Frame zu wechseln Dies ist ein wichtiges Detail Der beste Weg um Hilfe zu bekommen ist was zu erklären Alles, was Sie versucht haben und stellen Sie den Code, den Sie verwendet haben, und was das Ergebnis war. Ich habe einfach versucht, einfach auf den iframe und Eingabe einer E-Mail und Passwort und es funktionierte gut. Sie sollten es erneut versuchen und wenn es nicht funktioniert, post Code, den Sie versucht haben (in Ihrer Frage) und was das Ergebnis war ... Ausnahme Nachricht, etc. – JeffC

+0

Könnten Sie bitte Ihren Code posten, damit ich sehen kann, was ich vermisse? (Ich habe dies angefordert, da Sie gesagt haben, dass es für Sie arbeitet) Ich werde von Ihrem Codee lernen – abcdef

0

Eigentlich @JeffC richtig ist, gibt es eine iframe. Bevor Sie das Element in einem iframe finden, müssen Sie also das iframe wechseln.

Wie Sie Kommentar erwähnt haben, wie: -

Ich habe versucht, das Hinzufügen browser.switch_to.frame (username1)

Sie Schalt tatsächlich username1 Element iframe Element zu der Annahme, das ist falsch.

Sie müssen das Element iframe separat als anderes Element finden, das Sie suchen, und dann zu diesem iframe-Element wechseln.Aber hier kann man zu iframe wechseln, indem seine id wie unter Verwendung von: -

browser.switch_to.frame("loginaccountframe") 

#now do your login stuff inside iframe 
username1 = browser.find_element_by_id("username") 
username1.send_keys(email.get()) # Used a gui entry box so why email.get() 

password1 = browser.find_element_by_id("password") 
password1.send_keys(password.get()) 

#now after doing all stuff inside iframe you need to switch back to default content for further steps 
browser.switch_to.default_content()