2017-12-18 3 views
0

ich die folgenden zwei Funktionen definiert haben:Python/Selenium Funktionsaufruf und erforderlichen Argumente fehlen

def setUp(self, language): 
    #defines the webdriver 
    self.browser = webdriver.Firefox() 

    #calls the website 
    self.browser.get("http://www.test.com") 

    #defines the language to be used 
    self.INTERFACE_LANGUAGE = language 
    if(language == "de"): 
     self.username = "[email protected]" 
     self.pwd = "test" 
    elif(language == "en"): 
     self.username = "[email protected]" 
     self.pwd = "test" 
    return self.username, self.pwd 

und

def login_user(self, username, pwd): 
    """login the user""" 
    #fill in the userdata 
    self.u_Name = self.browser.find_element_by_id("form_user_id") 
    self.u_Name.send_keys(username) 
    self.u_Pwd = self.browser.find_element_by_id("form_user_pwd") 
    self.u_Pwd.send_keys(pwd) 

    #submit the form 
    self.submit_Login = self.browser.find_element(By.XPATH,'//input[@name="send" and @value="Log in"]') 
    self.submit_Login.click() 

, wenn ich versuche setUp so zu nennen:

lang = "de" 
username, pwd = setUp(lang) 
login_user(username, pwd) 

es gibt zurück:

Traceback (most recent call last): 
    File "c:\Users\user\Documents\test\test.py", line 40, in <module> 
    username, pwd = setUp(lang) 
TypeError: setUp() missing 1 required positional argument: 'language' 
    login_user(username, pwd) 

kann mir bitte jemand helfen, dies zu beheben. Ich verstehe nicht, warum es heißt, dass ein Argument fehlt.

Vielen Dank im Voraus für jede Hilfe!

+3

'def setUp (self, Sprache):' - zwei Argumente, '= setUp (lang)' - ein Argument. Das ist der Grund, warum 'setUp() 1 benötigtes Positionsargument vermisst ' – suit

+2

Das erste Argument von gebundenen Methoden (d. H. Self/cls/wie auch immer Sie es nennen) wird implizit geliefert, Sie geben es nicht explizit selbst weiter. – jkm

+2

Es scheint, dass Sie Methoden aus der Klasse genommen haben und jetzt verwenden Sie sie als normale Funktionen, die nicht "Selbst" brauchen. Oder vielleicht haben Sie falsche Einrückungen im Code und diese Funktion sollte innerhalb der Klasse sein. – furas

Antwort

0

Wie @furas sagte, benutzte ich einfach die Funktionen, wie sie in einer Klasse waren, aber sie waren nicht.

So war die Lösung der selbst aus der Argumentliste zu entfernen:

def setUp(language): 
    #defines the webdriver 
    global browser, INTERFACE_LANGUAGE 
    browser = webdriver.Firefox() 

    #calls the website 
    browser.get("http://www.test.com") 

    #defines the language to be used 
    INTERFACE_LANGUAGE = language 
    if(language == "de"): 
     username = "test" 
     pwd = "test" 
    elif(language == "en"): 
     username = "test" 
     pwd = "test" 
    return username, pwd 

def login_user(username, pwd): 
    """login the user to their account""" 
    #fill in the userdata 
    u_Name = browser.find_element_by_id("form_user_id") 
    u_Name.send_keys(username) 
    u_Pwd = browser.find_element_by_id("form_user_pwd") 
    u_Pwd.send_keys(pwd) 

    #submit the form 
    submit_Login = browser.find_element(By.XPATH,'//input[@name="send" and @value="Log in"]') 
    submit_Login.click() 
Verwandte Themen