Mein erster Versuch mit funktionen zu Programmieren und soweit funktioniert alles, jedoch hat die For Schleife einen fehler und zwar rennt diese nur 1x und ich komm nicht auf den fehler drauf
Code: Alles auswählen
# Verrechnung AMC -> Mach2Info
# Autor Jellitsch M 97247
import time
import sys
import openpyxl
from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
# login credentials
def login_credentials():
print()
print("VERRECHNUNG \n")
user = input("Username: ")
if user == "xx":
quit(0)
user_pw = input("Password: ")
datum = input("Bitte Datum eingeben (zb:211009): ")
benutzer = input("3L-Code: ")
print()
if user == "1" and user_pw == "1":
user = "Jem"
user_pw = "Vie14611##"
return user, user_pw, datum, benutzer
# webpage login->einzelleistungen finden
def get_webpage(user, user_pw):
driver_pfad = "chromedriver.exe"
mach2info_link = "http://machprod/info-gui/login.jsp"
driver = webdriver.Chrome(driver_pfad)
driver.get(mach2info_link)
print("----- ", driver.title, " -----")
driver.implicitly_wait(600)
login_webpage_user = driver.find_element_by_id("username")
login_webpage_user.send_keys(user)
print("----- Username wird eingegeben -----\n")
login_webpage_user_pw = driver.find_element_by_id("password")
login_webpage_user_pw.send_keys(user_pw)
print("----- Password wird eingegeben -----\n")
login_webpage_button = driver.find_element_by_id("buttonLogin")
login_webpage_button.click()
print("----- Einloggen wird versucht -----\n")
time.sleep(0.3)
operation_webpage = driver.find_element_by_id(
"workspace-navigation-operations")
operation_webpage.click()
time.sleep(0.3)
verrechnung_webpage = driver.find_element_by_xpath(
"//*[@id='accounting-tab-operations']")
verrechnung_webpage.click()
print("----- Einzelleistungen wird gesucht -----\n")
time.sleep(0.3)
return driver
# Einzelleistunen abfragen
# def get_einzelleistung():
# return workbook, tabelle, rows, cols
def eintragen_der_leistungen(driver, datum, tabelle, rows, benutzer):
print("Excel Vorlage wird geladen.... \n")
workbook = openpyxl.load_workbook("Verrechnung.xlsx")
tabelle = workbook["Tabelle1"]
rows = tabelle.max_row
cols = tabelle.max_column
print(rows, "Anzahl der Flüge \n")
for r in range(1, rows + 1):
flug = tabelle.cell(row=r, column=1).value
verrechnungs_code = tabelle.cell(row=r, column=4).value
if verrechnungs_code == "059 Schleppfahrzeug":
verrechnungs_code = "059"
if verrechnungs_code == "065 Airstarter":
verrechnungs_code = "065"
if verrechnungs_code == "080 Schlepp":
verrechnungs_code = "080"
if verrechnungs_code == "085/1 Pushback-Stange":
verrechnungs_code = "085"
if verrechnungs_code == "098 Hitzer/Kühlung":
verrechnungs_code = "098"
if verrechnungs_code == "059 Schleppfahrzeug":
verrechnungs_code = "059"
if verrechnungs_code == "101 Ballast":
verrechnungs_code = "101"
if verrechnungs_code == "120 Zurrösen(Ringe)":
verrechnungs_code = "120"
if verrechnungs_code == "122 Strick":
verrechnungs_code = "122"
if verrechnungs_code == "125 Brett 1m":
verrechnungs_code = "125"
if verrechnungs_code == "120 Zurrösen(Ringe)":
verrechnungs_code = "120"
if verrechnungs_code == "122 Strick":
verrechnungs_code = "122"
if verrechnungs_code == "125 Brett 1m":
verrechnungs_code = "125"
if verrechnungs_code == "202 Red Cap/Loading Supervisor":
verrechnungs_code = "202"
if verrechnungs_code == "204 Lader (Gepäcksuche)":
verrechnungs_code = "204"
if verrechnungs_code == "227 KINDERWAGEN":
verrechnungs_code = "227"
if verrechnungs_code == "236 150 Pax":
verrechnungs_code = "236"
if verrechnungs_code == "237 151 Pax":
verrechnungs_code = "237"
if verrechnungs_code == "268 Bremsenk. B777,A380":
verrechnungs_code = "268"
if verrechnungs_code == "50 Gr. Bus":
verrechnungs_code = "050"
if verrechnungs_code == "51 Citybus PAX":
verrechnungs_code = "051"
if verrechnungs_code == "52 Crew-Bus":
verrechnungs_code = "052"
if verrechnungs_code == "55 Citybus Connex PAX":
verrechnungs_code = "055"
if verrechnungs_code == "57Citybus B/C":
verrechnungs_code = "057"
if verrechnungs_code == "66 GPU 90KV 1Stecker":
verrechnungs_code = "066"
if verrechnungs_code == "67 GPU180KV 2 Stecker":
verrechnungs_code = "067"
if verrechnungs_code == "68 DIESELSTAPLER":
verrechnungs_code = "068"
if verrechnungs_code == "69 Hubtisch Maindeck":
verrechnungs_code = "069"
if verrechnungs_code == "70 Hubtisch":
verrechnungs_code = "070"
if verrechnungs_code == "76 Stiege":
verrechnungs_code = "076"
einheiten = tabelle.cell(row=r, column=5).value
flug_eingabe = driver.find_element_by_id(
"accounting-flight-flightdesignator")
flug_eingabe.send_keys(flug)
time.sleep(0.3)
flug_datum = driver.find_element_by_id("accounting-flight-flightdate")
flug_datum.send_keys(datum)
time.sleep(0.3)
flug_abfrage = driver.find_element_by_id(
"query-button-accounting-flight")
flug_abfrage.click()
time.sleep(0.3)
# gibt es eine fehlermeldung
fehler = driver.find_element_by_id("error-overlay-accounting-flight")
time.sleep(0.3)
# wenn fehlermeldung aufscheint dann wechseln in/out
if fehler.is_displayed():
in_out_abfrage = driver.find_element_by_id(
"accounting-flight-direction")
in_out_abfrage.click()
in_out_abfrage_dropdown = Select(in_out_abfrage)
in_out_abfrage_dropdown.select_by_visible_text("Incoming")
in_out_abfrage_dropdown.click()
verrechnung = driver.find_element_by_id("code-accounting-flight")
verrechnung.send_keys(verrechnungs_code)
time.sleep(0.3)
verrechnung_einheiten = driver.find_element_by_id(
"amount-accounting-flight")
verrechnung_einheiten.send_keys(einheiten)
time.sleep(0.3)
lettercode_eingabe = driver.find_element_by_id(
"name-accounting-flight")
lettercode_eingabe.send_keys(benutzer)
time.sleep(0.3)
speichern_verrechnung = driver.find_element_by_id(
"plus-button-accounting-flight")
speichern_verrechnung.click()
# ausgabe ------ 204 wurde für OS123 mit 100 Einheiten hinzugefügt-----
print("-----", r, "--- ", verrechnungs_code, " wurde für ", flug,
"mit ", einheiten, "Einheiten hinzugefügt---")
return workbook, tabelle, rows, cols
def beenden(driver):
driver.quit()
sys.exit()
# hauptfunktion
def main():
user, user_pw, datum, benutzer = login_credentials()
driver = get_webpage(user, user_pw)
eintragen_der_leistungen(driver, datum, benutzer)
# beenden()
return
# hauptfunktion starten
if __name__ == "__main__":
main()