TypeError: this constructor takes no arguments
Verfasst: Mittwoch 14. Dezember 2022, 13:44
Hallo zusammen,
ich komme einfach nicht drauf und der bisherige Hinweis den ich fand auf __init__ verstehe ich nicht.
Es geht um ein Testscript für bzw. mit Selenium.
Ich bekomme immer eine Fehlermeldung zur Zeile 52, die fängt so an:
Vollständige Fehlermeldung:
Hier der vollständige Code der Datei "test_web_elemente_iframe_selenium_kurs_firefox.py"
Die zugehörige Datei in der die Webelemente angesprichen werden, die Page Datei, ist diese hier "pages.seleniumkurs_iframe_page.py":
Ich finde keinen Fehler und es sieht bei mir exakt so aus wie im Kursvideo.
Hat jemand eine Idee?
Vielen Dank und viele Grüße
ich komme einfach nicht drauf und der bisherige Hinweis den ich fand auf __init__ verstehe ich nicht.
Es geht um ein Testscript für bzw. mit Selenium.
Ich bekomme immer eine Fehlermeldung zur Zeile 52, die fängt so an:
Code: Alles auswählen
iframePage = SeleniumKursIFramePage(self.driver)
iframePage.aktiviere_iframe()
Code: Alles auswählen
Error
Traceback (most recent call last):
File "C:\Python27\Lib\unittest\case.py", line 329, in run
testMethod()
File "C:\Robot\untitled\SeleniumProjektAbschnitt2\tests\test_web_elemente_iframe_selenium_kurs_firefox.py", line 52, in test_iframe
iframePage = SeleniumKursIFramePage(self.driver)
TypeError: this constructor takes no arguments
Code: Alles auswählen
# This Python file uses the following encoding: utf-8
import unittest
from selenium import webdriver
from pages.seleniumkurs_login_page import SeleniumKursLoginPage
from pages.selniumkurs_home_page import SeleniumKursHomePage
from pages.seleniumkurs_test_app_page import SeleniumKursTestAppPage
from pages.seleniumkurs_iframe_page import SeleniumKursIFramePage
class TestIFrameSeleniumKursFirefox(unittest.TestCase):
def setUp(self):
print("+++ Initialisierung WebDriver")
self.driver = webdriver.Firefox()
self.driver.maximize_window()
self.driver.get("https://seleniumkurs.codingsolo.de")
def tearDown(self):
print("+++ tearDown nach jedem Test. Aufräumen.")
self.driver.close()
def test_iframe(self):
print("+++ FIREFOX Start Test iFrame")
## Arrange
# Login
loginPage = SeleniumKursLoginPage(self.driver)
loginPage.zugangsdaten_eingeben("Benutzername", "Passwort")
loginPage.login_button_anklicken()
# Navigation durch das Portal
homePage = SeleniumKursHomePage(self.driver)
homePage.hauptmenu_aufrufen()
homePage.selenium_test_app_anklicken()
# Sprung zum iFrame
print("+++ Sprung zur iFrame Seite")
testAppPage = SeleniumKursTestAppPage(self.driver)
testAppPage.iframe_beispiel_anklicken()
print("+++ Sprung zum iFrame")
iframePage = SeleniumKursIFramePage(self.driver)
iframePage.aktiviere_iframe()
# Starte iFrame Beispiel mit Eingabe und Button
## Act
print("+++ Texteingabe und Button klicken")
iframePage.namen_eingeben()
iframePage.alert_anklicken()
## Assert
print("+++ Prüfung Inhalt Alertbox")
self.assertTrue('Dieter' in iframePage.alert_box_auslesen())
iframePage.alert_box_wegklicken()
if __name__ == '__main__':
unittest.main()
Code: Alles auswählen
from selenium.webdriver.common.by import By
class SeleniumKursIFramePage:
INPUT_NAME = (By.ID, "name")
BTN_ALERT = (By.ID, "alertbtn")
def __self__(self, driver):
self.driver = driver
def aktiviere_iframe(self):
self.driver.switch_to.frame("iframe")
def namen_eingeben(self, namen):
self.driver.find_element(*self.INPUT_NAME).send_keys(namen)
def alert_anklicken(self):
self.driver.find_element(*self.BTN_ALERT).click()
def alert_box_auslesen(self):
return self.driver.switch_to.alert.text
def alert_box_wegklicken(self):
self.driver.switch_to.alert.accept()
Hat jemand eine Idee?
Vielen Dank und viele Grüße