2016-06-06 7 views
3

Ich habe versucht, Selenium durch Python zu verwenden, um einen Benutzernamen und ein Kennwortfeld auszufüllen, um eine Twitter-Autorisierung zu erlauben. Dies sollte eine sehr einfache Aufgabe sein, aber es gibt mir immer einen Fehler. Hier ist das Feld Benutzername in HTML ich füllen wollen:Selen durch Python füllt kein Feld

<div class="row user "> 
    <label for="username_or_email" tabindex="-1">Username or email</label> 
    <input aria-required="true" autocapitalize="off" autocorrect="off" autofocus="autofocus" class="text" id="username_or_email" name="session[username_or_email]" type="text" value=""> 
</div> 

Hier ist der HTML-Code des Passwort-Feld:

<div class="row password "> 
    <label for="password" tabindex="-1">Password</label> 
    <input aria-required="true" class="password text" id="password" name="session[password]" type="password" value=""> 
</div> 

Hier ist mein Code:

username_field = browser.find_element_by_id("username_or_email") 
password_field = browser.find_element_by_id("password") 
username_field.send_keys("[email protected]") 
password_field.send_keys("SuperSecretPassword") 
password_field.send_keys(Keys.ENTER) 

Ziemlich einfach oder? Aber die Minute, die ich den Code ausführen es einen Fehler wirft, wenn es um zu send_keys versucht zu sagen am Ende des Fehlers:

selenium.common.exceptions.WebDriverException: Message: TypeError - undefined is not a function (evaluating '_getTagName(currWindow).toLowerCase()') 

Kann jemand mir erklären, was hier vor sich geht? Warum weigert es sich, die Felder zu füllen?

+0

Ich bin mir ziemlich sicher, dass Code fehlt, welchen Browser möchten Sie verwenden? – glls

+0

Ich benutze PhantomJS dafür. browser = webdriver.PhantomJS (ausführbare_Pfad = 'PATH TO PHANTOMJS') – OneManRiot

+0

Ich bezweifle, dass das 'for'-Tag eine Rolle dort spielt. Https://github.com/detro/ghostdriver/issues/450 könnte hilfreich sein. – nullpointer

Antwort

0

Ich habe versucht, den Fehler hier zu reproduzieren, aber das Skript arbeitet

ein paar Tage in Ordnung vor bekam ich sehr seltsame Fehler mit einfachen Dingen, die Lösung wurde die WebDriver Herabstufung

Ich verwende chromedriver 2,25

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


driver = webdriver.Chrome(executable_path="/home/user/selenium/chromedriver2.25") 
url = 'http://localhost/teste.html' 
driver.get(url) 

username_field = driver.find_element_by_id('username_or_email') 
password_field = driver.find_element_by_id("password") 


username_field.send_keys("[email protected]") 
password_field.send_keys("SuperSecretPassword") 

password_field.send_keys(Keys.ENTER) 

html:

<div class="row user "> 
    <label for="username_or_email" tabindex="-1">Username or email</label> 
    <input aria-required="true" autocapitalize="off" autocorrect="off" autofocus="autofocus" class="text" id="username_or_email" name="session[username_or_email]" type="text" value=""> 
</div> 
<div class="row password "> 
    <label for="password" tabindex="-1">Password</label> 
    <input aria-required="true" class="password text" id="password" name="session[password]" type="password" value=""> 
</div>