Str is not ..... fehler in for schleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

Guten morgen

Leider bekomm ich immer eine fehlermeldung und find den fehler nicht

Fehler ist

Str is not collable

Code: Alles auswählen

for Anzahl in range(1, Anzahl_Loeschen + 1):
    o = driver.find_element_by_xpath("//*[@id='member-table-row-0']/div/div[1]")
    o.click()
    time.sleep(0.3)
    m_iZone = driver.find_element_by_xpath("//*[@id='member-table-row-0']/zmd-member-table-edit/form/div[3]/div/select")
    m_iZone.click()
    mitarbeiterdd = Select(m_iZone)
    mitarbeiterdd.select_by_visible_text("")
    save = driver.find_element_by_xpath("//*[@id='member-table-row-0']/zmd-member-table-edit/form/div[4]/button")
    save.click()
    driver.implicitly_wait(0)
    WebDriverWait(driver, 600).until(ec.element_to_be_clickable(By.XPATH("//*[@id='member-table-row-0']/div/div[1]")))
    # #################################################################################################################
    # ZMD Test 3 versuch den explicit error zu beheben 071021
    # wait = WebDriverWait(driver, 600)
    # time.sleep(1)
    # warten = wait.until(ec.element_to_be_clickable((By.XPATH, "//*[@id='member-table-row-0']/div/div[1]")))
    # ---------------------------------------
    # Neuer Code
    # siehe 2 zeilen über kommentar
    # #################################################################################################################
    print("----- ", Anzahl, " gelöscht-----")
    time.sleep(0.5)
funtioniert bis zum save eigentlich dann kommt der fehler.
meine vermutung ist eigentlich das mit dem webdriverwait.

Code: Alles auswählen

 driver.implicitly_wait(0)
    WebDriverWait(driver, 600).until(ec.element_to_be_clickable(By.XPATH("//*[@id='member-table-row-0']/div/div[1]")))
hintergrund für den webdriverwait ist das ich auf einen Mitarbeiter klicken muss dann dropdown menü auf " " setzen muss, speichern klick und dann kommt ein lade"kreis" und dieser ist teilweise bis zu 10 min lang teilweise auch nur 2 sekunden. deswegen würde ich den driver warten lassen bis dieses mitarbeiter feld wieder clickbar ist
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte die echte & vollständige Fehlermeldung posten. Nicht irgendwas halb gares aus dem Gedächtnis.
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

Fehler Meldung wäre

Trackball
File "ZMD_Clear.py" , like 130 in <module>
Typeerror: 'str' Objekt is not callable
[27780] Failed to execute Script zmd clear Due to unhandled exception
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist schon wieder abgeschrieben. Es heißt Traceback, nicht Trackball. Es ist line, nicht like. Es ist TypeError, nicht Typeerror.

Und es fehlt natürlich vor allem dann die konkrete Zeile.

So kann man halt nicht helfen 🤷🏼‍♂️
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

Code: Alles auswählen

import sys
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

print("                                                                erstellt v. Jellitsch M")
print("     LÖSCHEN DER ZMD ZONEN EINTEILUNG")
print("                            Version 3")
print("Folgende Zonen können gewählt werden:")
print()
print("-----------------------------------")
print("[   1 = GUT            8 =  POL   ]")
print("[   2 = HAL            9 =  SCJ   ]")
print("[   3 = HAK           10 = STD    ]")
print("[   4 = HOE           11 = STH    ]")
print("[   5 = KAM           12 = SZM    ]")
print("[   6 = MAI           13 = ULJ    ]")
print("[   7 = ORS           14 = WOM    ]")
print("-----------------------------------")
print()
print()
print("Bei Falscher Zone schließt das Programm")
print()

Zone = input("-----Welche Zone: ")
Anzahl_Loeschen = int(input("-----Wieviele Mitarbeiter sollen gelöscht werden: "))
print()
print("------Bitte Login Daten eingeben")
user = input("------Username: ")
userpw = input("------Password: ")

if user == "1":
    user = "Jem"
if userpw == "1":
    userpw = "##"

if Zone == "1":
    print("Zone gewählt: GUT")
    Zone = "Gussenbauer"
elif Zone == "2":
    print("Zone gewählt: HAL")
    Zone = "Halper"
elif Zone == "3":
    print("Zone gewählt: HAK")
    Zone = "Harkam"
elif Zone == "4":
    print("Zone gewählt: HOE")
    Zone = "Hönlinger"
elif Zone == "5":
    print("Zone gewählt: KAM")
    Zone = "Kain"
elif Zone == "6":
    print("Zone gewählt: MAI")
    Zone = "Maierhofer"
elif Zone == "7":
    print("Zone gewählt: ORS")
    Zone = "Orsolics"
elif Zone == "8":
    print("Zone gewählt: POL")
    Zone = "Pöll"
elif Zone == "9":
    print("Zone gewählt: SCJ")
    Zone = "Schneeweiß"
elif Zone == "10":
    print("Zone gewählt: STD")
    Zone = "Stadler"
elif Zone == "11":
    print("Zone gewählt: STH")
    Zone = "Steinbrugger"
elif Zone == "12":
    print("Zone gewählt: SZM")
    Zone = "Szamalovits"
elif Zone == "13":
    print("Zone gewählt: ULJ")
    Zone = "Ullisch"
elif Zone == "14":
    print("Zone gewählt: WOM")
    Zone = "Wollmersdorfer"
else:
    print("Programm wird geschlosssen in 3")
    time.sleep(1)
    print("Programm wird geschlosssen in 2")
    time.sleep(1)
    print("Programm wird geschlosssen in 1")
    time.sleep(1)
    sys.exit()
print()

print("-----Webdriver wird geöffnet-----")
driver = webdriver.Chrome("chromedriver.exe")
driver.get("http://machprod/zmd/ui/#/login")
driver.implicitly_wait(300)
print("-----In das ZMD wird eingeloggt-----")
# driver.maximize_window()
driver.find_element_by_id("username").send_keys(user)
driver.find_element_by_id("password").send_keys(userpw)
time.sleep(1)
driver.find_element_by_id("login-button").click()
time.sleep(1)
print("-----Mitarbeiter Menü wird geöffnet-----")
a = driver.find_element_by_xpath("//*[@id='manage-members']")
a.click()
time.sleep(1)
zonenfilter = driver.find_element_by_xpath("//*[@id='groups']")
zonedd = Select(zonenfilter)
zonedd.select_by_visible_text(Zone)
button = driver.find_element_by_xpath("//*[@id='buttonSearchMember']")
button.click()
time.sleep(1)
mitarbeiter = driver.find_element_by_xpath("//*[@id='member-table-row-0']/div/div[1]")
showmitarbeiter = mitarbeiter.is_displayed()
time.sleep(1)
print("-----Zone wird gelöscht-----")

for Anzahl in range(1, Anzahl_Loeschen + 1):
    o = driver.find_element_by_xpath("//*[@id='member-table-row-0']/div/div[1]")
    o.click()
    time.sleep(0.3)
    m_iZone = driver.find_element_by_xpath("//*[@id='member-table-row-0']/zmd-member-table-edit/form/div[3]/div/select")
    m_iZone.click()
    mitarbeiterdd = Select(m_iZone)
    mitarbeiterdd.select_by_visible_text("")
    save = driver.find_element_by_xpath("//*[@id='member-table-row-0']/zmd-member-table-edit/form/div[4]/button")
    save.click()
    driver.implicitly_wait(0)
    WebDriverWait(driver, 600).until(ec.element_to_be_clickable(By.XPATH("//*[@id='member-table-row-0']/div/div[1]")))
    # #################################################################################################################
    # ZMD Test 3 versuch den explicit error zu beheben 071021
    # wait = WebDriverWait(driver, 600)
    # time.sleep(1)
    # warten = wait.until(ec.element_to_be_clickable((By.XPATH, "//*[@id='member-table-row-0']/div/div[1]")))
    # ---------------------------------------
    # Neuer Code
    # siehe 2 zeilen über kommentar
    # #################################################################################################################
    print("----- ", Anzahl, " gelöscht-----")
    time.sleep(0.5)

print()
print("-----------------------------------------------------")
print("Fertig mit der Eingabe der PAX Zahlen.....")
print("Bei Fehler bitte Screenshot an M. Jellitsch schicken!")
print("m.jellitsch@viennaairport.com | 0664 835 700 3")
print()
time.sleep(1)
print("-----Programm wird geschlosssen in 3-----")
time.sleep(1)
print("-----Programm wird geschlosssen in 2-----")
time.sleep(1)
print("-----Programm wird geschlosssen in 1-----")
time.sleep(1)
exit()
Benutzeravatar
sparrow
User
Beiträge: 4535
Registriert: Freitag 17. April 2009, 10:28

@cybrixx252: In Zeiel 130 des gezeigten Codes steht ein Kommentar.
Bitte zeig uns doch den Code und den zu dem Code passenden, koplettten Traceback.

Ansonsten gilt: Du versuchst so etwas, und das geht nicht:

Code: Alles auswählen

>>> foo = "bar"
>>> foo()
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    foo()
TypeError: 'str' object is not callable
>>> 
Du versuchst eine Zeichenette aufzurufen.
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

ich versuche einen string aufzurufen?

das problem ist das ich immer zuhause den code erstellen muss und in der arbeit dann erst testen kann da man nur auf diese internetseite zugriff vom firmen netzwerk hat.
außerdem lerne ich alles im selbst studium mit internet. Bisher noch kein Buch gefunden.

deswegen auch alles in einer wurscht ohne def __function__ usw. das versuch ich derzeit zu lernen.
Benutzeravatar
__blackjack__
User
Beiträge: 14027
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@cybrixx252: In der Zeile in der die Ausnahme ausgelöst wird, gibt es drei Aufrufe. Und einer davon wird auf einer Zeichenkette versucht. Was man auch komplett ohne Internetverbindung herausfinden kann, weil das recht offensichtlich falsch verwendet wird. Im auskommentierten Code wird es noch richtig gemacht.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

ah ok. das ist das problem mit dem "vom internet her lernen" da gibt es die version welche auskommentiert war und die die aktuell im code war.
und natürlich das fehlende wissen von mir. ganz klar.
Benutzeravatar
Dennis89
User
Beiträge: 1532
Registriert: Freitag 11. Dezember 2020, 15:13

cybrixx252 hat geschrieben: Montag 11. Oktober 2021, 13:00 das ist das problem mit dem "vom internet her lernen"
Man kann recht viel vom Internet lernen, Mist inklusive.
Kein Mist lernst du hier:
https://docs.python.org/3/tutorial/

Dann macht es meiner Meinung und Erfahrung nach keinen Sinn und Codes zusammen zu kopieren. Das habe ich am Anfang auch versucht und gar nichts gelernt.
Versuche am besten dein Programm selbst aufzubauen und bei Problemen fragen.

Ich glaube du hast die Aussage von @__blackjack__ falsch verstanden. Um deinen Code auszuführen benötigst du eine Internetverbindung. Der Fehler ist aber offensichtlich und sollte deswegen auch ohne Internetverbindung erkannt werden. (Hoffe so wars von ihm gemeint?)

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten