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.
cybrixx252
User
Beiträge: 30 Registriert: Freitag 27. August 2021, 14:06
Samstag 9. Oktober 2021, 09:33
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
cybrixx252
User
Beiträge: 30 Registriert: Freitag 27. August 2021, 14:06
Montag 11. Oktober 2021, 05:04
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
Montag 11. Oktober 2021, 07:08
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
Montag 11. Oktober 2021, 11:15
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()
sparrow
User
Beiträge: 4535 Registriert: Freitag 17. April 2009, 10:28
Montag 11. Oktober 2021, 11:26
@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
Montag 11. Oktober 2021, 12:10
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.
__blackjack__
User
Beiträge: 14027 Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:
Montag 11. Oktober 2021, 12:38
@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
Montag 11. Oktober 2021, 13:00
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.
Dennis89
User
Beiträge: 1532 Registriert: Freitag 11. Dezember 2020, 15:13
Dienstag 12. Oktober 2021, 11:48
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]