Seite 1 von 1

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

Verfasst: Samstag 9. Oktober 2021, 09:33
von cybrixx252
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

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

Verfasst: Samstag 9. Oktober 2021, 09:44
von __deets__
Bitte die echte & vollständige Fehlermeldung posten. Nicht irgendwas halb gares aus dem Gedächtnis.

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

Verfasst: Montag 11. Oktober 2021, 05:04
von cybrixx252
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

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

Verfasst: Montag 11. Oktober 2021, 07:08
von __deets__
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 🤷🏼‍♂️

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

Verfasst: Montag 11. Oktober 2021, 11:15
von cybrixx252

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()

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

Verfasst: Montag 11. Oktober 2021, 11:26
von sparrow
@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.

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

Verfasst: Montag 11. Oktober 2021, 12:10
von cybrixx252
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.

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

Verfasst: Montag 11. Oktober 2021, 12:38
von __blackjack__
@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.

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

Verfasst: Montag 11. Oktober 2021, 13:00
von cybrixx252
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.

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

Verfasst: Dienstag 12. Oktober 2021, 11:48
von Dennis89
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