programm steht nach if abfrage still

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 Abend

ich will für meine Arbeitskollegen ein Programm erstellen, welches hilft die Flieger einer bestimmten Airline automatisch "aufzusetzen"
Jedoch gibt es 2 Verschiene Arten von Flieger.

1) Flieger wo die Max Werte nicht gespeicht sind "LNA Flieger"
2) Flieger wo die Max Werte fix ins System gespeichert sind

Ich habe im Hintergrund eine .xlsm weil ein automatischer Löschknopf als Makro hinterlegt ist.
Grundsätzlich nimmt er sich dort von den Spalten folgende Daten

A: Flugnummer
C:Flugzeug Type (airbus/boeing)
E:Passagiere (schätzung)

bei den LNA Fliegern müssen die Werte von den Fliegern Manuell hinzugefügt werden deswegen hab ich eine If abfrage gemacht die schaut ob ein bestimmtes "feld" angezeigt wird
Dies Klappt auch sehr gut. Das Programm geht alle reiter dieser Web App... durch und tragt alle Felder mit einen Standart Wert aus und gibt diesen anschließend wieder ins "archiv" retour.

Jedoch bei nicht LNA Fliegern kommt ein sogenanntes Remark Pop Up wo man gewissen informationen sehen kann (bei diesen Fliegern jedoch immer leer)

wenn ich jetzt mit

Code: Alles auswählen

      if driver.find_element_by_xpath("//*[@id='remarksInfoDlg_container']").is_displayed():
            driver.find_element_by_xpath("//*[@id='remarksInfoDlg']/div[1]/div[1]").click()
Abfrage ob dieses Element angezeigt wird steht der Code darunter einfach still und wird nicht ausgeführt.

Kein Fehler nichts das Programm schließt sich einfach nach einer Zeit.

Meine Überlegung war ob ich einfach eine if not abfrage machen soll und dann den code darunter auszuführen.
was ich morgen in der Arbeit testen werde, da ich auf den link leider nur im geschlossenen netzwerk zugriff habe.

mit dem jetztigen code funktionieren nur LNA Flieger bei keine LNA flieger kommen eben diese Pop Up Msg welche ich zwar wegklicken kann aber dann eben nichts mehr weiter macht.

Code: Alles auswählen

# Mach2WB Flieger aufsetzen
# Autor Jellitsch M 97247

# import sys
import openpyxl
import time
from selenium import webdriver
# from selenium.common.exceptions import TimeoutException
# from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By


def login_credentials():
    print("----- Mach2WB Flieger aufsetzen -----\n")
    username = input("--- Username: ")

    if username == "xx":
        quit(0)

    password = input("--- Passwort: ")

    if username == "1" and password == "1":
        username = "###"
        password = "###"

    datum = input("--- Datum (zB:08.12.2021): ")

    return username, password, datum


def einloggen_webpage(username, password):
    print("----- Einloggen in Mach2WB -----")
    driver_pfad = "chromedriver.exe"
    mach2wb_link = "##########"
    driver = webdriver.Chrome(driver_pfad)
    driver.get(mach2wb_link)
    driver.implicitly_wait(50)
    print("----- " + driver.title + " -----")
    time.sleep(0.3)
    driver.find_element_by_id("firstElement").send_keys(username)
    driver.find_element_by_id("josso_password").send_keys(password)
    driver.find_element_by_id("login-button").click()

    if ec.visibility_of_element_located((By.XPATH, "//*[@id='content']/div[2]/table/tbody/tr[2]/td/form/input[1]")):
        time.sleep(0.3)
        driver.find_element_by_xpath("//*[@id='content']/div[2]/table/tbody/tr[2]/td/form/input[1]").click()

    return driver


def aufsetzen(driver, datum):
    driver.find_element_by_xpath("//*[@id='ui-id-2']").click()
    driver.find_element_by_xpath("//*[@id='ui-id-16']").click()
    driver.find_element_by_id("btnSave").click()
    driver.find_element_by_id("searchFlights").click()

    print("----- Vorlage wird geladen -----")
    workbook = openpyxl.load_workbook("FR_einspielen.xlsm")
    tabelle = workbook["Tabelle1"]
    rows = tabelle.max_row
    print("----- ", rows, " Anzahl der Flüge -------")

    for r in range(1, rows + 1):
        flugnummer = tabelle.cell(row=r, column=1).value
        ac_type = tabelle.cell(row=r, column=3).value
        pax = tabelle.cell(row=r, column=5).value
        flg = driver.find_element_by_xpath("//*[@id='searchFlightsTab']/form/div[3]/table/tbody/tr[1]/td[3]/input")
        flg.click()
        flg.send_keys(flugnummer)
        input_date = driver.find_element_by_id("dateFrom")
        input_date.click()
        input_date.send_keys(Keys.CONTROL + "a")
        input_date.send_keys(Keys.DELETE)
        input_date.send_keys(datum)
        driver.find_element_by_id("submitSearch").click()
        rausholen = driver.find_element_by_xpath("//*[@id='data']/tbody[2]/tr/td[7]/a/img")
        rausholen.click()
        driver.switch_to_alert().accept()

        if ec.visibility_of_element_located((By.XPATH, "//*[@id='content']/form/div/div[1]")):
            if ac_type == "A320":
                lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
                lna_conf.send_keys("Y180")
                lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
                lna_class.send_keys("Y")
                lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
                lna_seats.send_keys("180")
                lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
                lna_dow.send_keys("42000")
                lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
                lna_mzfw.send_keys("60000")
                lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
                lna_tow.send_keys("75000")
                lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
                lna_law.send_keys("66000")
                comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
                comp1.send_keys("1")
                comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
                comp3.send_keys("3")
                comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
                comp4.send_keys("4")
                comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
                comp5.send_keys("5")
                comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
                comp1max.send_keys("99999")
                comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
                comp3max.send_keys("99999")
                comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
                comp4max.send_keys("99999")
                comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
                comp5max.send_keys("99999")
                save = driver.find_element_by_xpath("//*[@id='btnApply']")
                save.click()
                driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
            elif ac_type == "W38":
                lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
                lna_conf.send_keys("Y189")
                lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
                lna_class.send_keys("Y")
                lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
                lna_seats.send_keys("189")
                lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
                lna_dow.send_keys("42000")
                lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
                lna_mzfw.send_keys("60000")
                lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
                lna_tow.send_keys("75000")
                lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
                lna_law.send_keys("66000")
                comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
                comp1.send_keys("1")
                comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
                comp3.send_keys("2")
                comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
                comp4.send_keys("3")
                comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
                comp5.send_keys("4")
                comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
                comp1max.send_keys("99999")
                comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
                comp3max.send_keys("99999")
                comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
                comp4max.send_keys("99999")
                comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
                comp5max.send_keys("99999")
                save = driver.find_element_by_xpath("//*[@id='btnApply']")
                save.click()
                driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()

        if driver.find_element_by_xpath("//*[@id='remarksInfoDlg_container']").is_displayed():
            driver.find_element_by_xpath("//*[@id='remarksInfoDlg']/div[1]/div[1]").click()

        # COR
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[4]/a").click()
        driver.find_element_by_xpath(
            "//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[3]/td[1]/input[1]").click()
        driver.find_element_by_xpath(
            "//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[6]/td[1]/input[1]").click()
        driver.find_element_by_xpath(
            "//*[@id='content']/div[6]/form/div[1]/div[2]/table[1]/tbody/tr[9]/td[1]/input[1]").click()
        driver.find_element_by_xpath("//*[@id='btnSubmit']").click()

        # F&C
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[5]/a").click()
        driver.find_element_by_name("crewCockpit").send_keys("2")
        driver.find_element_by_name("crewCabin").send_keys("4")
        driver.find_element_by_name("flightTimeEstimatedString").send_keys("0130")
        driver.find_element_by_name("airlinePhoneNumber").send_keys("28291")
        driver.find_element_by_name("taxiFuel").send_keys("1")
        driver.find_element_by_name("tripFuel").send_keys("2")
        driver.find_element_by_name("takeoffFuel").send_keys("3")
        driver.find_element_by_xpath("//*[@id='btnApply']").click()

        # PAX
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[6]/a").click()
        driver.find_element_by_xpath(
            "//*[@id='loaddata']/tbody/tr[1]/td/table[2]/tbody/tr[3]/td[2]/input").send_keys(pax)
        driver.find_element_by_xpath("//*[@id='btnApply']").click()

        # C&M
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[7]/a").click()
        driver.find_element_by_name("loadFigureList[0].mailWeight").send_keys("0")
        driver.find_element_by_name("loadFigureList[0].mailPieces").send_keys("0")
        driver.find_element_by_name("loadFigureList[0].cargoWeight").send_keys("0")
        driver.find_element_by_name("loadFigureList[0].cargoPieces").send_keys("0")

        notoc = driver.find_element_by_xpath("//*[@id='loaddata']/tbody/tr[1]/td[2]/table[1]/tbody/tr[2]/td[2]/select")
        notoc.click()
        notoc_auswahl = Select(notoc)
        notoc_auswahl.select_by_visible_text("not created")
        driver.find_element_by_xpath("//*[@id='btnApply']").click()

        # Dist
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[8]/a").click()
        driver.find_element_by_name("destBulkList[0].row[2].baggageWithCode").send_keys("r")
        driver.find_element_by_xpath("//*[@id='bulkContainersForm']/div/div[5]/button[1]").click()

        # Placeback
        driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
        driver.find_element_by_id("btnPlaceBack").click()
        driver.find_element_by_id("searchFlights").click()

        print("----- ", r, ".", flugnummer, " wurde mit", pax, "aufgesetzt! -----")
        flg = driver.find_element_by_xpath("//*[@id='searchFlightsTab']/form/div[3]/table/tbody/tr[1]/td[3]/input")
        flg.click()
        flg.send_keys(Keys.CONTROL + "a")
        flg.send_keys(Keys.DELETE)
        print("----- Eingabe wurde gelöscht! -----")


def main():
    username, password, datum = login_credentials()
    driver = einloggen_webpage(username, password)
    aufsetzen(driver, datum)

    return


if __name__ == "__main__":
    main()

cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

Hier noch ein Bild von den Pop Up

Bild
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

Bild
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

kann es sein das die IF abfragen für die LNA Flieger nicht korrekt sind und deswegen der restliche Code bei nicht zutreffen der IF abfrage einfach nicht weitergeführt wird?
ich hab zb nach der if abfrage einen print("bis hier gehts") geschrieben und diese scheint nie auf.
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

wenn ich die if abfragen trenne und 2 einzelne mache sollte es rein theoretisch doch gehen oder?

Code: Alles auswählen

        if ec.element_to_be_clickable((By.XPATH, "//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")) \
                and ac_type == "A320":
            lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
            lna_conf.send_keys("Y180")
            lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
            lna_class.send_keys("Y")
            lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
            lna_seats.send_keys("180")
            lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
            lna_dow.send_keys("42000")
            lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
            lna_mzfw.send_keys("60000")
            lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
            lna_tow.send_keys("75000")
            lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
            lna_law.send_keys("66000")
            comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
            comp1.send_keys("1")
            comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
            comp3.send_keys("3")
            comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
            comp4.send_keys("4")
            comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
            comp5.send_keys("5")
            comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
            comp1max.send_keys("99999")
            comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
            comp3max.send_keys("99999")
            comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
            comp4max.send_keys("99999")
            comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
            comp5max.send_keys("99999")
            save = driver.find_element_by_xpath("//*[@id='btnApply']")
            save.click()
            driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
            print("LNA Fertig")
            time.sleep(1)

        if ec.element_to_be_clickable((By.XPATH, "//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")) \
                and ac_type == "W38":
            lna_conf = driver.find_element_by_xpath("//*[@id='content']/form/div/table[1]/tbody/tr[3]/td[2]/input")
            lna_conf.send_keys("Y189")
            lna_class = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[1]/input")
            lna_class.send_keys("Y")
            lna_seats = driver.find_element_by_xpath("//*[@id='content']/form/div/table[2]/tbody/tr[2]/td[2]/input")
            lna_seats.send_keys("189")
            lna_dow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[2]/td[2]/input")
            lna_dow.send_keys("42000")
            lna_mzfw = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[3]/td[2]/input")
            lna_mzfw.send_keys("60000")
            lna_tow = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[4]/td[2]/input")
            lna_tow.send_keys("75000")
            lna_law = driver.find_element_by_xpath("//*[@id='content']/form/div/table[3]/tbody/tr[5]/td[2]/input")
            lna_law.send_keys("66000")
            comp1 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[1]/input")
            comp1.send_keys("1")
            comp3 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[1]/input")
            comp3.send_keys("2")
            comp4 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[1]/input")
            comp4.send_keys("3")
            comp5 = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[1]/input")
            comp5.send_keys("4")
            comp1max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[3]/td[2]/input")
            comp1max.send_keys("99999")
            comp3max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[4]/td[2]/input")
            comp3max.send_keys("99999")
            comp4max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[5]/td[2]/input")
            comp4max.send_keys("99999")
            comp5max = driver.find_element_by_xpath("//*[@id='content']/form/div/table[4]/tbody/tr[6]/td[2]/input")
            comp5max.send_keys("99999")
            save = driver.find_element_by_xpath("//*[@id='btnApply']")
            save.click()
            driver.find_element_by_xpath("//*[@id='flightNav']/tbody/tr/td[3]/a").click()
            print("LNA Fertig")
            time.sleep(1)

        print("bishier ists ok ")
        if ec.element_to_be_clickable((
                By.CSS_SELECTOR,
                "#remarksInfoDlg > div.dojoFloatingPaneTitleBar.dojoAlignTop > div.dojoFloatingPaneCloseIcon")):
            print("warten2")
            time.sleep(1)
            action = ActionChains(driver)
            action.send_keys(Keys.ALT + "O")
            action.perform()
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

ok ich komm echt nicht drauf ich hab jetzt 2 seperate if abfragen wie oben gemacht jedoch geht er immer auch wenn das feld der if abfrage nicht clickbar ist in diese abfrage
hab direkt nacht der if abfrage eine Print ausgabe geschrieben und die kommt immer.

weiß echt nicht mehr weiter
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

cybrixx252 hat geschrieben: Donnerstag 9. Dezember 2021, 17:55 kann es sein das die IF abfragen für die LNA Flieger nicht korrekt sind und deswegen der restliche Code bei nicht zutreffen der IF abfrage einfach nicht weitergeführt wird?
ich hab zb nach der if abfrage einen print("bis hier gehts") geschrieben und diese scheint nie auf.
Wahrscheinlich ist es so etwas. Das würde ich mit einem ordentlichen Debugger untersuchen.
Ich denke nicht, dass dazu hier jemand was sagen kann, ohne es auszuprobieren - ich jedenfalls nicht.
cybrixx252
User
Beiträge: 30
Registriert: Freitag 27. August 2021, 14:06

ah ok muss ich gleich mal schauen wie das geht weil ich das PyCharm auf meinen Privaten Laptop installiert hab und am Firmen PC immer nur die .exe verwenden kann.
Antworten